В компании Outsourcify мы работаем над проектами разного размера: от небольших сайтов, состоящих из нескольких страниц, до сложных бизнес-приложений. В зависимости от конкретного случая мы рекомендуем клиентам разные технические решения (например, мы пишем много одностраничных приложений на JavaScript и работаем с WordPress), но в самых сложных сценариях, когда разрабатываются крупные веб-приложения, занимающие группу разработчиков на несколько недель или месяцев, мы отдаем предпочтение фреймворку Symfony. Если говорить откровенно, то я выбрал Symfony прежде всего по личным причинам. Будучи французом, я познакомился с первой версией Symfony еще более 10 лет назад и с тех пор непрерывно использую этот фреймворк, развиваясь вместе с ним. Изначально Symfony был разработан французом Фабьеном Потенсье (Fabien Potencier), а затем поддерживался принадлежащим ему агентством веб-разработки, SensioLabs. Я даже не помню, как именно я узнал о существовании этого фреймворка, но наверняка этому поспособствовало то, что я регулярно посещал франкоязычные веб-сайты. Наличие документации и учебных пособий на французском тоже помогло. В те годы (2002–2003) я работал ИТ-консультантом и разработчиком в Париже, сотрудничая с крупными корпорациями (EDF, GDF, Alstom). Стандартом для разработки больших бизнес-приложений тогда был язык Java. Я работал над поддержкой и развитием кода существующих приложений, созданных в основном с помощью Spring, Struts и Hibernate. В свободное время я иногда разрабатывал личные веб-сайты на PHP (например, онлайн-журнал Eklektik Rock, который я несколько раз переделывал). Уже тогда мне этот язык казался удобнее при разработке в простой локальной среде. Я пробовал разные доступные на тот момент фреймворки. Первым из освоенных мной стал Mojavi, я даже смог задействовать его в одном небольшом проекте для клиента. Когда я решил оставить свою работу в Париже и переехать в Таиланд, я уже открыл для себя первую версию Symfony, которая была выпущена в 2005 году. Перейти от Java-библиотек, которые я использовал на работе, к фреймворку типа MVC, каким являлся Symfony, было довольно просто. Современные PHP-фреймворки очень похожи на Spring MVC, а Propel (библиотека ORM, предлагавшаяся в те времена вместе с Symfony; с тех пор заменена на Doctrine) имела сходства с Hibernate. Когда я стал фрилансером, мне стало очевидно, что я не буду продолжать программировать на Java: не то чтобы это было невозможно, но простота использования Symfony, возможность его установки на недорогие PHP-серверы, а также тот факт, что у Symfony был открытый исходный код, были явными аргументами в его пользу. Я больше не работал в команде — я работал удаленно на удаленных клиентов. И думаю, что сделал правильный выбор, остановившись на Symfony, — не только в тех проектах, над которыми работал в то время (я начал с приложения для бронирования отелей), но и в долгосрочной перспективе, так как Symfony с тех пор существенно эволюционировал и сегодня, на мой взгляд, является одним из лучших PHP-фреймворков. Не исключаю, что сейчас на нем ведут разработку и в некоторых из тех крупных французских компаний, где я работал 10 лет назад. Было бы самонадеянно сказать, что я испробовал абсолютно все остальные PHP-фреймворки, но я действительно испытал многие из них в разные моменты: Zend, CakePHP, CodeIgniter и — совсем недавно — Laravel (главный конкурент Symfony). Это сугубо личное предпочтение, но я всегда возвращался к Symfony. Даже Laravel, который по сути вобрал в себя большинство концепций Symfony и даже позаимствовал из него несколько компонентов (они были напрямую скопированы из Symfony), не показался мне столь же ясным и, главное, надежным, как Symfony. Сегодня, когда я руковожу собственным агентством веб-разработки, состоящим из нескольких команд PHP-разработчиков, этот аспект как никогда важен. Symfony обладает всеми возможностями, которые можно ожидать от веб-фреймворка, — отличной документацией, экосистемой полнофункциональных плагинов (более 1000 пакетов) и всем тем, что позволяет ускорить создание профессиональных веб-приложений, которые легко поддерживать. По сути это набор полностью бесплатных компонентов с открытым исходным кодом, а его библиотеки предлагают стандартные инструменты, которые можно применять во множестве различных проектов, избегая повторного решения типовых задач. Он соответствует шаблону проектирования Model — View — Controller (MVC), который позволяет разделять задачи и делает работу каждого участника более понятной при сотрудничестве в команде. Этот фреймворк появился в 2005 году как проект с открытым исходным кодом и был первым фреймворком, поддерживающим PHP 5.3. С тех пор фреймворк развивался и теперь поддерживает PHP версии 8, имеет огромное сообщество пользователей и контрибьюторов по всему миру и сегодня является наиболее популярным PHP-фреймворком во многих странах (включая, конечно, Францию, но не Таиланд, где PHP-разработчики отдают предпочтение Laravel). В нашей компании мы использовали Symfony для разработки различных приложений в таких отраслях, как социальные сети, управление контентом, онлайн-биллинг, маркетплейсы, управление запасами, сервисы для сравнения страховых планов и т. д. Гибкая архитектура. Symfony — это хорошо организованный фреймворк, который прост в освоении и использовании. Его архитектура позволяет разработчикам создавать легко поддерживаемые веб-приложения самым простым способом. Symfony включает в себя все, что ожидается от современного фреймворка, и имеет четкую структуру, облегчающую навигацию как в своем коде, так и в коде других разработчиков. Фреймворк полагается на многократно используемые компоненты и подразумевает следование множеству проверенных приемов работы. Кроме того, у него превосходная производительность (хотя и не всегда идеальная). Инновации. Авторам фреймворка Symfony и сообществу его пользователей свойственно любопытство, которое выходит далеко за рамки мира PHP. Создатели фреймворка внесли вклад в развитие PHP в целом, причем некоторые компоненты Symfony теперь используются в других фреймворках, CMS и известных библиотеках. Многие концепции фреймворка заимствованы из Java (например, внедрение зависимостей), однако Symfony поспособствовал их адаптации к среде PHP. Панель инструментов отладки и панель профилировщика — примеры инструментов, которые помогают программистам продуктивно вести разработку, и без них теперь трудно представить написание кода на PHP. Совместимость. Symfony позволяет создавать приложения, отвечающие потребностям любого бизнеса, при условии что эти приложения должны работать на веб-платформе. В этом фреймворке учитываются существующие стандарты PHP: PHPUnit, соглашения об именовании классов и т. д. Кроме того, Symfony позволяет использовать некоторые из своих компонентов, не используя при этом весь фреймворк, например систему управления интернационализацией, систему внедрения зависимостей, систему маршрутизации, систему управления формами и многие другие компоненты. Также авторы фреймворка выгодно использовали внешние библиотеки, такие как Doctrine и Swiftmailer, вместо того чтобы заново изобретать то, что уже хорошо работает в других проектах. Экосистема. Так как фреймворк написан на PHP, для него существует огромное количество полезных сторонних плагинов, называемых в Symfony пакетами (или bundles). Практически всегда можно найти пакет, который поможет в решении той или иной задачи. Фреймворк Symfony также набирает популярность и признание благодаря тому, что его легко установить на любой сервер c Linux (и даже c Windows) и добиться стабильной производительности. Он поддерживает любые базы данных, включая MySQL, PostgreSQL, SQLite и MongoDB. Он поддерживает даже автоматическую валидацию форм и ввода данных пользователем, чтобы избежать SQL-инъекций и XSS-атак. Репутация. С момента запуска проекта в 2005 году Symfony был быстро принят на вооружение PHP-разработчиками во всем мире. Сегодня он предлагает стабильную среду, которая является популярной и признанной на международном уровне. Количество ссылок на проект значительно возросло с момента его запуска; можно даже сказать, что Symfony внес вклад в «демократизацию» PHP и его распространение в крупных компаниях, хотя в профессиональной среде этот язык еще не так давно ассоциировался с низкой надежностью (и до сих пор ассоциируется, как скажут некоторые, но я не соглашусь). Symfony — это еще и активное сообщество разработчиков и контрибьюторов, которые участвуют в постоянном совершенствовании фреймворка и связанных с ним инструментов. Стоимость. Будучи ПО с полностью открытым исходным кодом, Symfony автоматически предполагает низкую стоимость использования. Symfony позволяет разрабатывать надежные приложения для любых видов бизнеса в соответствии с потребностями заказчика, предоставляя разработчикам все возможности для управления конфигурацией и индивидуальной настройки этих приложений. Фреймворк содержит набор инструментов, помогающих программистам тестировать и отлаживать приложения, а также документировать процесс разработки в соответствии с корпоративными стандартами. Единственные подразумеваемые затраты — это труд разработчиков и хостинг. Перевод подготовлен в преддверии старта занятий на курсе "Symfony Framework". Редактор