Почему Phalcon – это не обязательно хорошо?
Предисловие
Исходя из того, как в различных сообществах хвалят и восхищаются Phalcon, становится грустно из-за того, что подавляющее большинство этих людей практически не участвовало в написании приложений на нем. Все эти презентации русских и зарубежных спикеров кажутся полной чепухой на фоне их "псевдоопыта". Имея более одного года опыта программирования на данном фреймворке, я бы очень хотел заострить внимание на следующих вопросах:
Почему вам не стоит сейчас начинать проект?
-
Phalcon версии 1. *Написан на Си. Сейчас Вы, наверное, задумались о производительности, но только часть опытных пользователей задумалась о том, кто в случае багов будет заниматься их исправлением. Поверьте, что Вы наткнетесь на баг не один раз. Опять же, Вы подумали о том, что обратитесь за помощью к сообществу, и баг так или иначе могут утрясти. Только у меня висит 5 открытых багов:
[BUG] \Phalcon\Mvc\Model\Query\Builder Мультимодульное приложение не сохраняет модель по связи А DI не Depency Injection а Registry [NFR] QueryBuilder count method QueryBuilder беда с мультимодульностью [BUG] \Phalcon\Mvc\ViewОднако, если у Вас есть опыт программирования на си или Вы хотите его получить, сообщество с радостью примет исправление багов или будет получать NFR запросы на новый функционал в репозиторий.
Вы программируете на должности php backend, являясь программистом с опытом менее 2-х лет на full-time или 3-х лет на part-time.
- Вы еще не попробовали и не разобрались с фреймворком. Да, я понимаю, что работая фрилансером или на русского работодателя, нет времени сначала изучить, а потом начать писать. Но все же Вам следует сначала пробежаться по фреймворку и понять, как Вы будете писать приложения.
Что брать не стоит
-
Не стоит использовать классы для работы с Базой Данных. Да, именно к этому выводу я пришел. На более или менее большом проекте у Вас сразу же возникнет проблема с отсутствием поддержки подзапросов в QueryBuilder, но это только начало проблемы. Потом я наткнулся на leftJoin и проблему с n+1 в обработке коррекции (допустим, мне нужно выбрать product с пользователем, вроде бы и запрос правильный, но при обработке связи выполняется дополнительный select запрос по primary id модели, идущей по связи).
Пример того что я описал, только уже в багтрекере: Нет поддержки субзапросов в PHQL QueryBuilder - нет поддержки RAW SQL QueryBuilder - нет поддержки CRUD (insert) запросов
[Image](https://github.com/phalcon/phalco - класс для работы с картинками. Я не знаю, зачем этот класс нужен в hight load фреймворке, но он добавлен сравнительно недавно. Обработка изображений, как правило, выполняется далеко не во фронтенде, а в очередях, и там лучше всего использовать проверенную Библиотеку. Основываясь на своём опыте, я думаю, что лучшей будет Imagine. Библиотека поддерживает адаптеры на GD, GraphicsMagick, ImageMagick.
Что взять за основу?
В последние полгода появилось крайне много заготовок на Phalcon.
И что же сейчас делать?
Я думаю, лучший вариант по состоянию на 11 мая 2014 года - это подождать выхода версии 2.0.0. Она будет написана на модном сейчас языке zephir и будет легко поддерживаемой. После того, как ветка 2.0.0 станет @stable, начнется массовая поддержка и исполнения NFR запросов уже сообществом, а не только Phalcon Team.
Часто задаваемые вопросы
- Где найти готовые решения?
- Где лежит Phalcon 2.0? Она лежит в ветке 2.0.0 основного репозитория на github.
Вывод
Всем, кто не испугался начать проект уже после прочтения, я говорю: "Приветствую Вас в Phalcon Community и Happy Coding With Phalcon".