В рамках программы «Скажи нет Битриксу CMS» мы продолжаем пробовать различные PHP-фреймворки.

Справка: фреймворк — набор библиотек и компонентов, облегчающих разработку программного продукта. В отличие от CMS, фреймворк не содержит надстроек в виде интерфейсов администратора и решений типа «интернет-магазин в один клик».

Почему же мы так не любим готовые CMS?

Во-первых, это избыточность — львиная доля интерфейса администратора направлена на создание сайта, а вовсе не на управление готовым продуктом. Иными словами, 90% функционала, который любая коробочная CMS предлагает администратору, реализует то, что делается один раз в жизни — собственно, разработку сайта. Не стоит надеяться, что подобная ситуация облегчает дальнейшее развитие проекта для заказчика — любой новый раздел или функционал требуют проработки, отрисовки, верстки и снова программирования. В результате, CMS постоянно нужно модифицировать и вносить дополнения в код.

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

В результате, получается, что готовые коробочные CMS — это ужас, который без оговорок устроит либо любителя шаблонов с сайта TemplateMonster.com, либо человека, принимающего решения на основе маркетинговой активности со стороны разработчика той или иной CMS.

Справедливости ради, следует отметить и главное преимущество коробочной CMS — наличие целой армии разработчиков, которые хорошо изучили эту конкретную «коробку» и не оставят ваш кошелек вас без внимания при необходимости что-то доделать или переделать.

С этой точки зрения, различные CMS дизайн-студий выглядят еще хуже. Они не только обладают большинством недостатков коробочных CMS, но и вводят серьезные ограничения на развитие и обслуживание сайта, привязывая заказчика к одной конкретной студии.

Фреймворки свободны от указанных недостатков — это лишь база, «кирпичики», из которых можно создать любой сложности финальный продукт. При этом использование подобных «кирпичиков» формализует процесс разработки в достаточной степени, чтобы новый программист, знающий фреймворк, мог быстро разобраться в сайте.

Плата за использование фреймворка — увеличение времени разработки сайта. Хотя, как показало внимательное изучение этой проблемы — это лишь следствие врожденного перфекционизма некоторых разработчиков. Если побороть перфекционизм, то за счет использования фрейморков получается гораздо более эффективно настроить реакцию сайта на различное поведение пользователя (например, подозрительные входные данные).

Итак, для разработки сайта «WoooW!» был выбран фреймворк Yii. Странное непроизносимое название — это аббревиатура от «Yes, it is!».

Огромным плюсом Yii оказался готовый виджет валидации формы через модель данных с помощью Ajax. Если вы попробуете зарегистрироваться на сайте — то сможете заметить, что форма регистрации проверяет все введенные данные сразу и сразу сообщает об ошибках незамедлительно. Со стороны модели данных это обеспечивается гибким и расширяемым валидатором.

В целом Yii оставила двойственные впечатления. Интересные готовые виджеты и весьма удобный, продуманный функционал соседствуют с обилием статических классов, неожиданно приватными свойствами и средней готовностью для IDE. Помогает достаточно хорошая документация с описанием API и готовых решений. Возможно, мы еще попробуем сделать другой сайт на этом фреймворке.