Почему CakePHP использует это имя метода в запросе MySQL, а не возвращает результат?

При применении ответа от предыдущего вопроса я попытался переопределить один из встроенных методов разбиения на страницы CakePHP:

function paginateCount($conditions = null, $recursive = 0, $extra = array()) { if (isset($extra['group'])) { for ($i=0; $i<count($extra['group']);$i++) { if (strpos(strtolower($extra['group'][$i]),'having')!==false) unset($extra['group'][$i]); } exit(); } $count = parent::paginateCount($conditions, $recursive, $extra); return $count; } 

Проблема в том, что это, похоже, заставляет Cake выполнять MySQL-запрос, состоящий просто из имени метода. Очевидно, что это не работает и выдает ошибку:

Ошибка SQL: 1064: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'paginateCount' в строке 1

Поскольку у меня включена отладка, я могу видеть, где обычно будет запрос paginateCount ():

 1: SELECT COUNT(*) AS `count` FROM `tournaments` AS `Tournament` WHERE 1 = 1 

Я просто получаю:

     1: paginateCount 

    Я, очевидно, неправильно понял PHP-наследования операторов. Кажется, моя функция возвращает имя функции, которая она переопределяет, а не ее значение.

    Как я могу это исправить?

    Related of "Почему CakePHP использует это имя метода в запросе MySQL, а не возвращает результат?"

    Обычно это происходит, когда CakePHP не может найти метод в модели или приложенном поведении.

    Затем он передает вызов источнику данных (надеясь, что он имеет метод и знает, что делать), и именно поэтому вы получаете эту ошибку.

    Я бы проверял, что это то, что они кажутся (это метод в правильной модели, это торт, делающий автомодель из-за неправильного filenaming и т. Д.),

    Я исправил это, не обращаясь к вопросу, который я задал.

    Вместо того, чтобы передавать скорректированные параметры вверх по цепочке, как я хотел сделать в моем примере выше, я использовал их для выполнения той же самой работы напрямую:

     return $this->find('count', compact($conditions, $recursive, $extra)); 

    Это работает нормально, но не объясняет странное поведение, которое заставило меня задать вопрос в первую очередь. Я предполагаю, что Cake делает что-то напуганное с помощью виртуальных / «автоматических» методов.