Почему именно все методы экземпляра методов модели CakePHP. Например:
$post = $this->Post->findById($id);
вместо
$post = Post::find($id);
Я думаю, что все методы, которые работают с экземплярами модели (или записями), будут методами экземпляра, например:
$post = ...;
$post->publish(); // Would be $this->Post->publish($id) using Cake
и все методы, которые создают или находят записи (которые работают с общей коллекцией записей), будут методами класса (методы экземпляра), например:
$post = Post::findById($id); // Would be $this->Post->findById($id) using Cake
$newPost = Post::create(['title' => 'My post', 'body' => '<p>...</p>']);
// Would be $newPost = $this->Post->create([...]); using Cake
Я думаю, что это соглашение Cake противоречит логическим соглашениям ООП. Кто-нибудь знает причину этого дизайна?
Я думаю, что это соглашение Cake противоречит логическим соглашениям ООП.
Кто-нибудь знает причину этого дизайна?
То, что вы описываете, не является ни логичным, ни хорошей практикой. Ну, вы могли бы предоставить некоторые ссылки, которые объяснили бы, почему вы рассматриваете это как «логические соглашения ООП». Там нет конвенций, но шаблоны проектирования. хорошо Варианты использования — это «служебные» классы, такие как классы внутри папки «Utility» в CakePHP. Нет необходимости иметь несколько их экземпляров.
Смотрите также эти вопросы и ссылки:
Если вы хотите «выглядеть» или думаете, что «вам это нужно», вы можете использовать Laravel вместо CakePHP, который чрезмерно использует рисунок фасада почти для всего. Но я гарантирую, что это не улучшит ваш код.
Других решений пока нет …