Главная страница / Техногрет / ZendFramework / Kohana и Zend фреймворки.

31 января 2009

Kohana и Zend фреймворки.

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

Code Igniter

Когда-то давно я работал с CodeIgniter. Довольно мощный Фреймворк, особенно привлекает скоростью загрузки, хорошей документацией и мягкими соглашениями по коду. Из основных минусов, почему я отказался от дальнейшей работы с ним, было то, что он реализован на php4. И хотя у него имелись костыли для реализации открытых и закрытых членов классов, согласитесь это немножечко не то. Разрабатывая архитектуру приложения критически важно чтобы некоторые переменные были закрыты от наследования, ибо последующие поколения программистов, норовят расширять все, что только попадется под руку. Так же, очень огорчало отсутствие решения по layouts (в то время). Мой стиль работы основан на Two Step Pattern и Active Pattern (вызов контроллеров из вида)

Zend Framework


Огромный, но в тоже время очень гибкий продукт. Я написал на нем много решений, но всякий раз неприятно удивляла скорость и достаточно высокие требования к хостингу. Клиенты у нас разные. И далеко не все готовы тратиться на VPS или, того хуже dedicated.

С таким багажом опыта я пришел к Кохане.

Kohana


Итак плюсы:

  • php5. Ура я могу писать привычный код, делать статические методы, фабрики, закрывать переменные.

  • Очень и очень радует скорость загрузки. После Зенда с его стандартными 0.9 на P3 Linux (наш рабочий сервер), Кохана просто демонстрировала шикарные результаты. 0.03 – 0.04

  • Низкие требования к хостингу. Практически их вообще нет. Запускай где хочешь.

  • Относительная совместимость с CodeIgniter-ом, позволяет заимствовать оттуда ряд библиотек.

  • Очень порадовали отписанные классы авторизации и привилегий (Auth), класс pagination – наиболее частая задача, решений которой средствами Зенда я не находил и писал сам.

  • Гибкая и приятная работа с хуками. Возможно, я напишу об этом статью.


На этом можно было остановиться но….
Но за моими плечами годовой опыт работы с Зендом. Поэтому минусы пришли сами собой.

Минусы:

  • О да… Первое что бросается в глаза – это причудливая конвенция кода. Казалось бы мелочь, а тем не менее раздражают переменные типа $dir_name вместо привычных $dirName. Аналогично с названиями методов.

  • Паттерность… Разработчики Зенда положили голову на соблюдение ее. Именно из-за этого для единого запуска, подгружается до 100 файлов. Разработчики Коханы пошли иным путем. У них имеет место быть монолитное ядро, с возможностью расширения через Hooks и Events, а так же набор библиотек выполненных так же монолитно. Кому-то это можно показаться плюсом, кому-то минусом… Но меня не покидало чувство, что я пересел с новенького Мерседеса на Ладу Калина. Вроде как и работает, и тоже машина… а нет… что-то не так.

  • Третий минус вытекает из второго. Гибкость. Забудьте о динамическом формировании набора стилей и скриптов. Тут это придется оставить в View. Удобный для работы с формами паттерн composite, мной так же не был обнаружен.

  • Четвертый минус… Очень хорошо выразил кто-то на англоязычном сайта. It is very good use Kohana, but NOT to use is more good. Простите мой английский. Фреймворк не обладает многими полезными библиотеками. Я не нашел внятного layout, только самописные попытки залатать дырку, не нашел классов для работы с gettext, а это достаточно критично. И много-много других решений. Очень удачные в Зенде классы Request и Response мне пришлось импортировать сюда. Частично эта проблема решается путем заимствования библиотек из CodeIgnitor, но…Не для того ли мы уходили от php4?

  • Пятый минус так же очевиден. Документация и, особенно, русскоязычное сообщество крайне скудные. Не скрою, меня посещала мысль влиться в это движение. Очень хороший пиар, бы был, на фоне того, что материалов на эту тему мало…. Но…

Но первые 4 минуса, к сожалению достаточно меня оттолкнули. Нет счастья в этой жизни.

В дальнейшем отказываюсь от написания на базе Коханы своего инструментария. Для клиентов попроще у нас имеется Нексус. А большие проекты, лучше всего решать на Зенде.

Не в коем случае не хочу обидеть разработчиков Коханы. Более того, большинство моих минусов сугубо субъективные. И существует огромное количество задач, которые можно решить этим Фреймворком. Просто… Каждый выбирает по себе: женщину, религию, дорогу и… Фреймворк

© Weltkind 2008
validator