Рождественский пирог: долгожданный релиз CakePHP 1.2
К Рождеству разработчики CakePHP выпустили долгожданный релиз фреймворка версии 1.2. Разработка этой версии длилась почти 2 года и, надо сказать, пирог получился отменный! Что больше всего нравится лично мне:
- Behaviors — расширение функционала моделей. PHP досих пор страдает отсутствием множественного наследования и behaviors в CakePHP очень технично эту проблему решают.
- Тесты — CakePHP интегрируется с пакетом SimpleTest и позволяет создавать тесты для всех методов контроллеров и моделей. Это очень важно при разработке
- Консольная утилита, позволяющая создавать типичные модели, контроллеры, каркас приложения и т.д. Очень удобная, на мой взгляд.
- Законченная и понятная концепция плагинов. Части приложения, более-менее самостоятельные, можно изготавливать в виде плагинов и использовать в разных проектах.
Это, конечно, не полный список «вкусностей», а только то, что сразу вспомнилось. В целом, по сравнению с версией 1.1 фреймворк сильно изменился в лучшую сторону. Стал более понятным и удобным.
Авторы не удержались от добавления новых возможностей и, по сравнению с недавно вышедшим RC4, немного расширили функционал валидаторов у моделей. Теперь данные для поля, содержащего URL, можно проверять в режиме ‘strict’: тогда ошибка проверки будет возникать, если не указан протокол. Т.е. ‘http://example.com’ — правильно, а ‘example.com’ — ошибочно. Чтобы воспользоваться этой возможностью надо указать примерно такое правило проверки:
$validate = array('website' => array('rule' => array('url', true)));
Т.е. поле ‘website‘ должно содержать правильный URL, а второй параметр (true) как раз и указывает на обязательность наличия протокола (http://, ftp:// и т.п.)
Увы, документацию на версию 1.2, нельзя назвать всеобъемлющей. Это скорее обзор для начинающих, то, что по-английски называют User’s Guide. Документация для разработчика, Developer’s Guide, доступна только на языке PHP.
Очень неудобно отсутствие исключений (exceptions). Это, видимо, плата за совместимость с PHP4. Работу с исключениями можно дописать самостоятельно, но хочется, чтоб поддержка их была и в ядре. Будем надеятся, что в 2.0 они появятся, потому как поддержки PHP4 в следующей версии уже не будет.
34fb6db9-e173-400b-9ad4-ac8c0fa45e49

