Kohana, CodeIgniter, Yii
Фреймворк Kohana не является для меня открытием, на протяжении долгого времени я к нему присматривался, сравнивал с CodeIgniter и Yii, и вот теперь решил начать работать с ним. Большинство проектов я делал на CodeIgniter, но к сожалению будущее этого фреймворка видиться мне достаточно туманным. Если не брать во внимание несколько устаревшую архитектуру CodeIgniter, то он вполне отвечал моим требованиям. То, что для эффективного использования, его нужно основательно дорабатывать и дополнять, это можно было простить, но затянувшуюся возню вокруг второй версии уже нет. Хотя основной причиной моего решения, можно считать новости о том, что и без того немногочисленная команда разработчиков CodeIgniter, стала еще меньше.
Как альтернативу я рассматривал Yii фреймворк, но отбросил его. Я достаточно много работал с этой платформой, написал на нем несколько сайтов и пару универсальных мультиязычных систем управления, но работа с фреймворком меня не впечатлила. Сделано в нем достаточно много, сильная и большая команда разработчиков - это один из самых развивающихся фреймворков на PHP, но пока далеко не идеален.
Несмотря на лучший ORM (из того что есть для PHP), работать с ним несколько неудобно в сравнении с ActiveRecord из CodeIgniter. Я не нашел возможности изменять запросы, например делать связь один-к-одному не через JOIN, а через простое перекрещивание, а во многих случаях это не лучшим образом отражается на производительности. MySQL часто является узким местом в скорости работы системы и пользоваться неоптимальными запросами - непозволительная роскошь.
В Yii неплохая система модулей, но достаточно сложно огранизовать модульность, в этом плане каскадная файловая система Kohana со сквозными конфигами видиться мне более перспективной.
Во фреймворке есть система событий - это уникальная для фреймворков находка, но пользоваться ей достаточно неудобно. События сделаны неоправданно сложно, требуют много кода для использования и плохо сочитаются с модулями. Немного улучшает ситуацию возможность присоединять события из конфигурационных файлов, но без каскадной файловой систему сделать True модульность все равно достаточно сложно, быстрее будет в Kohana добавить события.
Вообще, я не хотел в этой статье хаять Yii - это очень хороший фреймворк, и если раньше все черпали мудрость из Ruby on Rails, то теперь уже из Yii разработчики заимствуют новые идеи. Основная причина, почему я не остановил свой выбор на Yii в том, что его достаточно сложно заточить под себя. Архитектура классов у Kohana более стройная, и особенно заслуживает внимания исходный код фреймворка, он понятный и хорошо форматирован, читать гораздо легче.