Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-settings.php on line 530

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-includes/cache.php on line 103

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /home/spwebru/com/wp-includes/theme.php on line 623
совет - Программируем на CakePHP


Дек 09 2008

Выносите максимум логики в модели

Раздел: МоделиМета @ 08:36

Просмотрите код ваших контроллеров. Если часто встречаются конструкции типа

$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);

Логично?

Этот принцип называется «толстые модели, худые контроллеры», он рекомендует переносить максимально возможную часть логики (естественно, логики поиска данных) приложения в модель.

Теги: , ,


Дек 03 2008

Автоматическая загрузка внешних библиотек

Раздел: Веб-разработкаМета @ 09:33

Перевод записи Auto-loading vendor files (or any other file) с блога Cakebaker’a.

Если вы используете внешние классы, не относящиеся к CakePHP (т.е. не являющиеся готовыми компонентами, хелперами, и т.д., например - PhpMailer или классы Pear), вам приходится импортировать эти классы вручную с помощью вызова App::import(’Vendor’, ‘ClassName’). Этот вызов работает если ваши классы находятся в папке ‘vendors’. То есть в каждом контроллере, или модели, или любом другом месте где вы хотите использовать внешний класс, вам приходится его сначала импортировать. Это не очень удобно.

Читать дальше “Автоматическая загрузка внешних библиотек”

Теги: , ,


Сен 17 2008

Основные навыки создания шаблонов в CakePHP

Раздел: ШаблоныМета @ 22:53

Вольный перевод заметки Felix Geisendörfer Basic CakePHP templating skills.

Документация по CakePHP описывает различные аспекты использования платформы, но в ней не рассматриваются практики создания шаблонов (views). В этой заметке я попробую сформулировать собственные наработки по их удобному составлению. Конечно, у всех разработчиков, постоянно работающих с Кейком уже есть свои стандарты и привычки, но надеюсь для новичков мои советы окажутся полезными.

Читать дальше “Основные навыки создания шаблонов в CakePHP”

Теги: , ,