Исходные тексты CakeBook

Это, конечно, уже не новость — некоторое время назад на всеобщее обозрение были выложены исходные тексты CakeBook. Это то самое приложение, которое работает на сайте http://book.cakephp.org — сайте с официальной документацией на CakePHP.

Мне было очень интересно посмотреть на различные приемы, использованные при написании этого приложения. Вдруг какая-нибудь идея пригодится? Похоже, что приложение написано на версии 1.1 фреймворка, поэтому не все вещи полезны, и кое-какие куски кода могут и не работать. Тем не менее, есть несколько вещей, на которые я обратил внимание.

  1. В AppController реализованы методы admin_index(), admin_view(), admin_add() и.т.д. И как же это я сам не сообразил? :-) Пять баллов.
  2. В AppModel очень, на мой взгляд, интересный метод searchConditions() для составления параметров запроса к модели и связанным с ней моделям для поиска по строковым и текстовым полям. Еще не пробовал, надо будет проверить, как этот метод работает совместно с ContainableBehaviour.
  3. Плагин ‘Users’, как мне кажется, хорошо демонстрирует тактику работы с плагинами: что можно сделать плагином, как с ним взаимодействовать. Есть над чем подумать: «Пользователь» со всеми его «профайлами» и прочим — действительно отдельная часть приложения, но не независимая.
  4. Один из очень часто задаваемых вопросов на форуме и гугловской группе — как сделать боковое меню, меняющееся в зависимости от действия, контроллера и т.д. В CakeBook можно посмотреть один из вариантов реализации. Не бесспорный, но интересный.
  5. Работа с ‘Vendors’ типа Zend_Search_Lucene. Лично мне было не очень интересно, т.к. я Lucene не использую, но отметить надо. :-)

Но, кое-что вызвало некоторое удивление. Например RedirectController. Перенаправляет пользователя на соответствующий узел в зависимости от slug’а. При этом номера узлов жестко заданы. Возможно, это сделано для улучшения производительности, но все-равно — мне не нравится.

AD7six использовал свой behavior для хранения картинок и файлов. Сам подход, теоретически, хорош, но конкретная реализация, на мой взгляд, не лучшая.

Я что-то упустил? Кто на что еще обратил внимание?

Автор

Сергей Родовниченко

Родился, учился, работал и все такое. Занимаюсь поддержкой сайтов на Shop-Script, Joomla, Wordpress, Prestashop. А также на самописных движках на базе CakePHP.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *