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

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

Фреймворк (framework) - готовый каркас с набором модулей, компонентов, расширения для быстрой, простой и качественной разработки программ.

PHP фреймворки позволяют:

  • ускорить процесс разработки веб-приложений
  • помогают писать простой и качественный код
  • повторно использовать код в проектах
  • легко масштабировать проекты
  • использовать современные практики программирования
  • легче тестировать программный код
  • обеспечить безопасность проекта

В данной статье вы увидите список самых популярных PHP фреймворков с плюсами и минусами. Для сравнения инструментов разработки были выбраны следующие PHP фреймворки:

  • Laravel
  • Yii
  • Symfony
  • Zend Framework
  • Codeigniter


И так, поехали!

Laravel

Laravel - это бесплатный  PHP фреймворк с открытым исходным кодом, созданный Тейлором Отвеллом для разработки веб-приложений по архитектурному шаблону MVC.

Можно сказать, что на появление Laravel повлияли остальные PHP фреймворки.

Он был создан как альтернатива фреймворку Codeigniter (о нем будет рассказано ниже), в котором было недостаточно полезных функций для разработки веб-приложений. В качестве основы Laravel выступают компоненты другого фреймворка - Symfony (о нем также, будет рассказано ниже).

Фреймворк Laravel очень популярен среди западных разработчиков веб-приложений.

С помощью менеджера пакетов Composer, фреймворк Laravel позволяет легко устанавливать и подключать различные компоненты для использования в веб-приложении.

Реализация шаблона ActiveRecord - Eloquent ORM, позволяет установить отношения между объектами базы данных веб-приложения и выстраивать удобные запросы для манипуляции данными.

Механизм автозагрузки классов позволяет не подключать вручную файлы через include и предотвращает загрузку не используемых компонентов.

Удобная система миграций помогает упростить развертывание и обновление веб-приложения.

В Laravel есть встроенная поддержка движка шаблонов Blade, с помощью которого  можно делать простые представления веб-приложения используя специальный синтаксис.

При создании приложения можно использовать Artisan - интерфейс командной строки для ввода встроенных команд, а также создания своих собственных.

В Laravel есть много полезных функций, позволяющих сделать процесс разработки веб-приложений быстрым, простым и качественным.

Из подобных функций можно отметить dd() - удобный аналог стандартной функции PHP var_dump(). Функция выводит информацию переменной в более понятной форме, разделяя данные на дерево атрибутов и значений, в возможностью поиска и перехода по ним.

Плюсы

  • Достаточно неплохая и понятная документация.
  • Вокруг фреймворка создана мощная экосистема. Различные курсы, конференции, обучающие материалы позволяют собрать вокруг фреймворка большое количество разработчиков и спонсоров, которые заинтересованы в развитии инструмента и принимают в этом участие. Да, здесь чувствуется запах маркетинга, и неплохой.
  • Одним из самых очевидных плюсов Laravel, является гибкая система маршрутизации, позволяющая составить самые разные проверки маршрута веб-приложения. Вы можете выделить маршруты в специальные группы, использовать пространство имен, указать параметры маршрута, использовать регулярные выражения, настроить поддоменную маршрутизацию и многое другое.
  • В Laravel много синтаксического сахара. Синтаксис API фреймворка достаточно простой и понятный. Здесь нет длинных и сложных конструкций, а только краткие и продуманные названия функций.
  • Laravel содержит удобный механизм обработки ошибок и исключений.
  • Фреймворк включает в себя встроенные механизмы аутентификации и авторизации пользователей, которую можно перенастроить под свои потребности.
  • Laravel предоставляет из коробки механизмы для кэширования веб-приложения с помощью Memcached и Redis. Кроме этого есть удобные функции для использования простого файлового кэширования данных.
  • Laravel предоставляет чистый и простой API поверх популярной библиотеки SwiftMailer с драйверами для SMTP, Mailgun, SparkPost, Amazon SES и sendmail, чтобы сделать отправку почты через локальную или облачную службу по выбору. В том числе есть механизм для построения очередей отправки почты.
  • Laravel Cashier обеспечивает выразительный, свободный интерфейс к сервисам биллинга по подписке Stripe и Braintree.

Минусы

  • Для русскоязычных разработчиков, без знания английского языка или его слабым знанием, к минусам фреймворка можно отнести довольно небольшое количество статей, примеров кода, переводов официальной документации. Для тех, кто знает английский на уровне чтения технической документации, данный минус можно опустить.
  • Синтаксический сахар в Laravel как плюс, так может быть и минусом. Очень легко привыкнуть к нему и позабыть, как пишутся чистые запросы и функции.
  • Нарушение обратная совместимости между версиями фреймворка.
  • Не логичное расположение каталогов и файлов. Например, по умолчанию в прямо в каталоге /app расположена модель User.php, которую логичней было бы расположить в каталоге /app/Models. Каталог resources с файлами представления размещен в корне приложения, хотя логичней будет его разместить в /app/resources.

Yii фреймворк

Yii - это бесплатный объектно-ориентированный компонентный full-stack PHP фреймворк. В основе Yii лежит другой фреймворк - PRADO, написанный на ASP.NET и впоследствии перенесенный на PHP. Вскоре после построения новой архитектуры, фреймворк PRADO был переименован на Yii. Название фреймворка является аббревиатурой слова «Yes It Is!». Прародителем фреймворка является китайский разработчик Qiang Xue.

Yii можно использовать для разработки любого вида веб-приложений. Благодаря своей основе компонентов, архитектуре и сложной поддержки кэширования, фреймворк подходит для разработки крупномасштабных проектов, таких как порталы, форумы, системы управления контентом (CMS), систем электронной коммерции, RESTful веб-сервисов и т.д.

Yii реализует для использования MVC (Model-View-Controller) архитектурный шаблон и способствует организации кода на основе этого шаблона.

Yii является full-stack фреймворком, предоставляя множество проверенных и готовых к использованию функций: построитель запросов и ActiveRecord для реляционных и NoSQL баз данных, RESTful API, поддержку многоуровневого кэширования и т.п.

Yii чрезвычайно расширяемый фреймворк в котором можно заменить почти каждый кусочек кода и разрабатывать нужные расширения.

Yii предоставляет Gii - визуальный интерфейс для автоматической генерации контроллеров, моделей и отображений.

Плюсы

  • Для русскоязычных разработчиков большим плюсом фреймворка, является хорошая документация, множество статей с примерами кода и сообщество.
  • Yii не показатель одного человека,  фреймворк подкреплен сильной командой разработчиков ядра, а также большим сообществом профессионалов постоянно способствующих развитию Yii.
  • Yii способствует быстрому прототипированию веб-приложения. Он относится к инструментам RAID разработки.
  • Встроенный механизм создания виджетов представления, например, для размещения на сайте различных блоков: последние посты, категории, навигация, блоки рекламы и т.п.
  • Компонент приложения i18n позволяет производить автоматический перевод сообщений веб-приложения.
  • Встроенная поддержка автоматической валидации форм и вывода сообщений об ошибках на основе данных из моделей веб-приложения.
  • Механизм Active Record для построения реляционной обработки запросов базы данных.
  • Множество готовых расширений на Github и их установка через Composer
  • Встроенные виджеты для отображения данных: DetailView (строки в таблице), ListView (Список), GridView (таблицы)
  • Встроенные механизмы для аутентификации, авторизации, регистрации пользователей
  • Содержит встроенную и очень удобную debug панель.

Минусы

  • Слабая экосистема вокруг фреймворка среди англоязычного сегмента разработчиков. Сообщество слишком сильно размазано по разным местам: несколько форумов с небольшой активностью, stackoverflow и т.п.
  • Хоть фреймворк и позволяет делать код простым, но далеко не элегантным. Если его синтаксис сравнивать с фреймворком Laravel, то он уступает.
  • Yii отстает от языка, стандартов и других фреймворков. Новые обновления с действительно полезными функциями выходят не так часто.
  • Слишком большая связанность backend и frontend частей Yii2. Фреймворк предлагает использовать библиотеку jQuery и Bootstrap, которые встроены по умолчанию в ядро фреймворка. Этот минус планируется исправить в новой версии фреймворка Yii 3, сделав его компоненты менее связанными.
  • Не очень гибкая система маршрутизации: нет возможности сгруппировать роуты.

Symfony

Symfony - свободный PHP фреймворк для быстрой разработки веб-приложений и решения рутинных задач веб-программистов. Разработка и поддержка фреймворка спонсируется французской компанией Sensio.

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

С помощью Symfony было разработано множество крупных проектов:

  • систем управления контентом: Magento, Drupal, Opencart
  • сервис социальных закладок Delicious
  • французский видеохостинг Dailymotion
  • движок форума phpbb

В том числе, Symfony повлиял на разработку фреймворка Laravel, где были задействованы его компоненты.

Symfony позволяет устанавливать сторонние пакеты, библиотеки, компоненты и настраивать их с помощью конфигурации в форматах YAML, XML, PHP, а также .env файлах.

Symfony не обеспечивает компонент для работы с базой данных, но обеспечивает тесную интеграцию с библиотекой Doctrine.

Symfony предоставляет функцию почтовой программы на основе популярной библиотеки Swift Mailer. Эта почтовая программа поддерживает отправку сообщений с ваших собственных почтовых серверов, а также с использованием популярных почтовых провайдеров, таких как Mandrill, SendGrid и Amazon SES.

Механизм интернационализации позволяет установить и произвести перевод сообщений веб-приложения на основе выбранного языка или страны.

Symfony предлагает систему логирования ошибок приложения, а также подключить библиотеку логирования Monolog.

Плюсы

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

Минусы

  • Несмотря на хорошую документацию, фреймворк является сложным для изучения.

Zend Framework

Zend Framework - это свободный объектно-ориентированный PHP фреймворк для разработки веб-приложений, разработанный и поддерживаемый компанией Zend. Данный фреймворк как правило больше всего используют при разработке крупных коммерческих проектов.

Основным спонсором Zend Framework является Zend и компания Rogue Wave , но многие другие внесли компоненты или важные функции в платформу. Такие компании, как Google, Microsoft и StrikeIron, сотрудничают с Zend для предоставления интерфейсов для веб-сервисов и других технологий, которые они хотят сделать доступными для разработчиков ZF.

Компания Zend участвует в разработке ядра языка программирования PHP.

В качестве менеджера зависимостей пакетов Zend Framework использует Composer. Для тестирования веб-приложения применяется PHPUnit, а для непрерывной интеграции служба Travis CI.

Zend Framework следует стандартам PHP-FIG и включает реализацию PSR-7 для интерфейсов HTTP-сообщений.

Поддержка множества баз данных: MariaDB, MySQL, Oracle Database, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite и Informix.

Гибкий механизм кэширования по памяти или файловой системы.

Плюсы

  • Отлично подходит для разработки коммерческих веб-приложений.
  • Объектно-ориентированный подход к разработке.
  • Несвязанные компоненты для повторного использования в проектах.

Минусы

  • Не подходит для быстрой разработки проектов.
  • Для русскоязычного сегмента разработчиков мало полезных материалов по разработке.

Codeigniter

CodeIgniter - это популярный PHP микро-фреймворк с открытым исходным кодом, для разработки веб-систем и приложений. Разработан компанией EllisLab, а также Риком Эллисом и Полом Бурдиком.

В CodeIgniter компоненты загружаются и процедуры выполняются только по запросу, а не глобально. Система не делает никаких предположений относительно того, что может потребоваться помимо минимальных основных ресурсов, поэтому система по умолчанию очень легкая.

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

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

Поэтому CodeIgniter позволяет кэшировать страницы для достижения максимальной производительности. с помощью встроенного компонента кэширования.

CodeIgniter послужил основой в разработке новых фреймворков: Kohana и Rain Framework. Многие идеи CodeIgniter были применены во фреймворках Fuel PHP и CodeLighter.

Плюсы

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

Минусы

  • Долгий застой в развитии Codeigniter 3. Сейчас перешел к новым владельцам  Технологическому институту Британской Колумбии (British Columbia Institute of Technology — ВСІТ) и находится в стадии разработки новой версии - CodeIgniter 4.

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

Краткая итоговая таблица с описанием особенностей фреймворков:

 

Laravel

Yii

Symfony

Zend Framework

Codeigniter

Лицензия

MIT

BSD MIT New BSD License MIT

Документация

хорошая

отличная

хорошая

неплохая

лучшая

Сообщество

сильное англоязычное, русскоязычное слабое

сильное русскоязычное, англоязычное слабое

сильное англоязычное

сильное англоязычное

сильное англоязычное, упадок русскоязычного

Дополнительные пакеты и расширения

Установка через Composer

PHP 7

Базы данных

MySQL, Postgres, SQLite и SQL Server

MySQL, MariaDB, SQLite, PostgreSQL, CUBRID, Oracle, MSSQL

MySQL, PostgreSQL, SQLite или любая другая PDO-совместимая СУБД)

MariaDB, MySQL, Oracle Database, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite и Informix

MySQL, PostgreSQL, MSSQL, SQLite, Oracle.

Логирование

Миграции

Безопасность

Защита от SQL- injection, XSS, CSRF

Вывод

Laravel на данный момент является наиболее перспективным PHP фреймворков и подходит для создания как небольших, так и крупных веб-проектов.

Заниматься разработкой новых проектов на Yii2 по прежнему можно, как и продолжать вести существующие проекты. Версия 3 пока еще находится в разработке, поэтому Yii находится в пролете и лучше для этого взять другой фреймворк, например, Laravel.

Symfony и Zend Framework лучше всего использовать для крупных коммерческих проектов с длительным периодом разработки.

CodeIgniter не умер, а новые владельцы продолжают развитие CodeIgniter 4.

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

PHP фреймворки являются незаменимым инструментом для быстрого возведения фундамента любого сайта. Они помогут ускорить процесс разработки и сделать качественный проект, избежав программирования всех частей с нуля. Использовать или не использовать тот или иной PHP фреймворка - ваше решение.