Дек 09 2008
Выносите максимум логики в модели
Просмотрите код ваших контроллеров. Если часто встречаются конструкции типа
$this->Product->recursive = -1; $hits = $this->Product->find('all',array('conditions'=>'Product.image <> "no_image"','order'=>'Product.hit DESC, Product.added DESC','limit'=>9));
то задумайтесь — а место ли им в контроллере?
В чем идея модели? Предоставлять интерфейс к данным. Т.е. Модель должна вернуть уже готовые к отображению данные, в контроллере — только связь с внешним видом. Весь выше приведенный код стоило бы заменить методом в модели, например getHits($num). Тогда вызов в контроллере упростился бы до:
$hits = $this->Product->getHits(9);
Логично?
Этот принцип называется «толстые модели, худые контроллеры», он рекомендует переносить максимально возможную часть логики (естественно, логики поиска данных) приложения в модель.
Декабрь 9th, 2008 at 13:23
Спасибо, очень интересно читать новые посты каждый день, особенно сейчас, когда я сам погрузился в изучение cakephp.
Декабрь 9th, 2008 at 13:27
и предлагаю вам в название добавить версию CakePHP, а то так как версия не указана, у меня не работали примеры на 1.1 и думаю у других могут возникнуть такие сложности, или размещать версию непосредственно возле кода.
Декабрь 9th, 2008 at 19:43
Пожалуйста!
Наша студия уже давно полностью перешла на ветку 1.2, поэтому все примеры приводятся для нее.
В некоторых постах я указываю версию кейка, но в заголовке блога не хотел - платформа часто обновляется даже внутри одной ветки, поэтому примеры быстро устаревают.
Если что-то интересует - спрашивайте в комментах, напишу отдельной заметкой.