Symfony для маленьких проектов — помощь или бремя

Йоу, теплокровные. Давненько не писал сюда, ибо было лень, периодически был занят и переделывал старенький сайт на новый лад, о чем сейчас и поведаю.

Маленькое лирическое отступление — теперь на моем бложике халявный вечный ssl от https://letsencrypt.org/ — спасибо лучшему шаред-хостингу https://beget.ru/ — не нужно следить за продлением и установкой, хостер все организует сам.

Вернемся к изначальному повествованию. Сидел я, никого не трогал, и внезапно подумал — а почему бы не отрефакторить один старый сайт и не перенести его на Symfony? Почему именно на этот фреймворк? Да потому что я могу. А еще хотелось составить более-менее объективную оценку того, насколько трудно или легко будет использовать такое решение в маленьких проектах и чем мне это поможет.

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

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

С учетом требований мне понадобилось подключить немного бандлов чтоб не возиться самому:

  • «knplabs/knp-menu-bundle»: «^2.0»
  • «symfony/assetic-bundle»:»^2.8″
  • «whiteoctober/breadcrumbs-bundle»: «^1.2»

Так же было написано одно расширение для Twig, а под конец консольная команда для генерации карты сайта, где пригодились объявленные как сервисы репозитории, что вполне неплохо ускорит приложение, т.к. не придется дергать контейнер каждый раз.

Теперь немного о проблемах:

Для некоторых, казалось бы простых, действий, приходится писать больше, чем ожидалось.

Пример — можно было бы использовать phpMorphy сразу в нужных местах, но нужно сделать сервис-обертку, в него уже прокинуть нужные зависимости (хотя и не особо это и проблема)

Динамические с*ка формы, документация по которым врет

Задача казалось бы простая — выбираем город и подтягиваем список банков, которые есть в этом городе. И если бы раньше я сделал просто пару ajax-запросов, то с формами для такой мелочи пришлось повозиться.

Пришлось немного повозиться с доктриной. Для мелких вещей лучше взять Propel

Теперь о том, что порадовало:

Да вообще почти все, с учетом того, что половина из того, что мне нужно, было сгенерировано через netbeans. И няшная debug-панель. Порадовала производительность на php7-fpm:

И это на сервачке с 1 ядром за 300 рублей в месяц!

Выводы:

Даже для мелких проектов Symfony вполне годен и не излишен. Конечно, придется немного повозиться в некоторых вопросах, но это даст хороший бонус поддерживаемости и масштабируемости, если проект будет расширяться. Так что используя этот фреймворк для нового проекта, Вы скорее всего себе поможете, а заодно узнаете много нового и полезного.

 

Теги:

Добавить комментарий

Войти с помощью: 

Комментарии:

  • Оставьте первый комментарий - автор старался

Вход на сайт
Разделы
Метки
wordpress статьи расширение функционала php бред конкурс бесполезная информация халява скрипты это Россия налоги лирика баян комментарии администрирование