В CakePHP; ORM поддерживает уровень абстракции функций SQL; поэтому вы можете использовать такие функции, как «СУММ» и «МАКС». Эти функции определены в FunctionBuilder. Cake также позволяет использовать пользовательские функции; Я не понимаю реализацию, но пример приведен ниже:
//..
$foo->select([
'another_field' => $foo->func()->sum('total'), // is a defined method
'field_name' => $foo->func()->date_format([ // date_format is not defined; but it is a valid function
'another_field' => 'identifier',
"'%M %Y'" => 'literal'
])
]);
phpstan сообщает
235 Call to an undefined method Cake\Database\FunctionsBuilder::date_format().
Я понимаю, почему phpstan сообщает об этом; но я недостаточно знаю, как подавить это. Предлагается создать метод в файле FunctionsBuilder, но это приведет к внесению изменений в файлы поставщиков.
Интернет советует не игнорировать это предупреждение; но в равной степени в текущем использовании это не проблема, поэтому можно надеяться, что в phpstan есть флаг «игнорировать» сообщение или /*@var ... override? */
🤔 А знаете ли вы, что...
CakePHP позволяет разрабатывать приложения, следуя принципам RESTful архитектуры.
Чтобы решить «Вызов неопределенного метода», у вас есть несколько вариантов:
__call
:namespace Cake\Database;
/**
* @method string dateFormat(array<mixed> $args)
*/
class FunctionsBuilder
{
}