Laravel или symfony: выбираем фреймворк для создания сайта

Какой PHP-фреймворк выбрать: сравниваем Symfony, Laravel и Yii2

В этой статье рассматриваются три наиболее популярных PHP-фреймворка: Symfony, Laravel и Yii2. Автор сравнивает их возможности и пытается помочь читателю выбрать лучший инструмент. Статья предназначена для начинающих разработчиков, которые ещё не работали с PHP-фреймворками.

Зачем нужен PHP-фреймворк

PHP — один из самых популярных и востребованных языков программирования. Его активно используют крупные проекты, например, Facebook и «ВКонтакте». На PHP написаны популярные системы управления контентом (CMS), в том числе WordPress. На этом движке работает около трети всех сайтов в интернете и около 60 % сайтов на CMS.

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

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

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

Как выбрать PHP-фреймворк

Выбрать фреймворк помогут ответы на следующие вопросы:

  • Какая функциональность у фреймворка, соответствует ли она нуждам проекта?
  • Насколько сложно изучать выбранный фреймворк?
  • Легко ли масштабировать проект, созданный с помощью данного фреймворка?
  • Насколько активно развивается инструмент?
  • Есть ли гарантированная долгосрочная поддержка (LTS)?
  • Есть ли активное сообщество?

Symfony, Laravel и Yii2

Перед погружением в детали коротко рассмотрим главные особенности наиболее популярных PHP-фреймворков. Это Symfony, Laravel и Yii2.

Symfony

Symfony представляет собой набор PHP-компонентов, которые подходят для повторного использования. Фреймворк позволяет делать масштабируемые и производительные приложения. API Symfony интегрируется со сторонними приложениями, а также с инструментами для фронтенд-разработки, например, Angular JS.

Symfony используют многие популярные проекты, например, Drupal и phpBB. Даже самый популярный PHP-фреймворк Laravel построен на основе Symfony.

Laravel

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

Yii был представлен в 2008 году. Это безопасный, быстрый и производительный фреймворк для разработки веб-приложений. Текущая версия — 2.0.19.

В Yii2 используется пакетный менеджер Composer для управления зависимостями. Благодаря ленивой загрузке Yii2 считается самым быстрым PHP-фреймворком.

Ещё одна особенность Yii2 — интеграция с jQuery. Благодаря этому фронтенд-разработчикам удобно работать с приложениями, созданными на Yii2. Как и в Symfony, в Yii2 используются готовые компоненты. Это ускоряет разработку.

Какой PHP-фреймворк лучше

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

Шаблонизаторы

Шаблонизаторы ускоряют разработку и упрощают создание фронтенда приложения. Например, с помощью шаблонизаторов решается задача автоматического экранирования HTML.

Symfony

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

Laravel

В этом фреймворке применяется шаблонизатор Blade. Он позволяет использовать код PHP в представлениях. Blade практически не влияет на скорость работы приложений, так как представления хранятся в отдельных файлах с расширением .blade.php . Код представлений преобразуется в нативный PHP.

Этот фреймворк не использует сторонних шаблонизаторов по умолчанию. Но разработчик может выбирать инструменты в зависимости от решаемых задач. В число рекомендуемых шаблонизаторов входят Twig и Smarty.

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

Модульность

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

В Yii2 реализован подход MVC. В этом фреймворке тоже есть компоненты, однако модульность реализована не так хорошо, как в Symphony.

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

Промежуточный вывод: если вам нужен модульный PHP-фреймворк, выбирайте Symfony.

Установка

Каждый фреймворк поддерживает несколько вариантов установки. Например, Symfony, Laravel и Yii2 можно установить с помощью пакетного менеджера Composer. Все фреймворки после установки позволяют работать с шаблонным приложением.

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

Скорость разработки

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

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

Производительность

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

Производительность Laravel — дискутабельный вопрос. По этому критерию он уступает Yii2 и Symfony. Тем не менее в сети можно найти много рекомендаций по ускорению приложений на Laravel.

Поддержка баз данных

По этому критерию бесспорным лидером становится Symfony. Yii2 и Laravel отстают. Конкретную информацию можно увидеть в таблице.

Laravel Yii2 Symfony
Microsoft BI Microsoft BI Apache Jackrabbit
MongoDB MongoDB CouchDB
MySQL MySQL DynamoDB
PostgreSQL PostgreSQL GraphDB
Redis Redis MemBase
SQLite SQLite MemCasheDB
Microsoft BI
MySQL
MongoDB
NoSQL
Oracle
PostgreSQL

Сообщество и ресурсы

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

Важный момент — будущее фреймворка лучше оценивать не по статичной величине сообщества, а по его динамике и активности.

Если оценивать такой ресурс, как документацию и обучающие материалы, здесь лидером будет Laravel.

Расширяемость

Функциональность фреймворков увеличивается с помощью расширений или пакетов. По этому критерию лидером остаётся Laravel. В каталоге Packalyst можно найти около 9000 пакетов для Laravel.

Yii2 и Symfony могут похвастаться 2800 и 2830 расширениями соответственно. Если для вас важна возможность расширить стандартную функциональность фреймворка с помощью дополнительных пакетов, выбор очевиден.

Схожесть характеристик

Выше мы рассматривали разницу между фреймворками. Пришло время сосредоточиться на похожих характеристиках. Вот они:

  • Все три инструмента относятся к fullstack-фреймворкам. Они обеспечивают полный цикл разработки веб-приложения, включая фронтенд и бэкенд.
  • Это проекты с открытым исходным кодом, который можно найти на GitHub.
  • За Symfony, Laravel и Yii2 стоят многочисленные активные сообщества.
  • Все три фреймворка поддерживают объектно-реляционное отображение (ORM). Поэтому эти инструменты удобно использовать в парадигме объектно-ориентированного программирования.
  • Перечисленные фреймворки представляют собой надёжные и безопасные инструменты для создания веб-приложений.

Всё ещё не можете выбрать фреймворк? Вот тезисная информация, которая поможет определиться.

  • есть LTS версии фреймворка;
  • широкая функциональность из коробки;
  • это самый стабильный фреймворк;
  • есть готовые компоненты, что позволяет использовать при создании приложений модульный подход.
  • поддерживает Ajax;
  • обеспечивает быстродействие и производительность приложений;
  • легко расширяемый фреймворк;
  • есть встроенный обработчик ошибок;
  • подходит для разработки веб-сервисов, построенных с учётом REST (RESTful web-service).
  • самый популярный PHP-фреймворк;
  • есть встроенный пакетный менеджер Composer;
  • поддержка юнит-тестирования из коробки;
  • большое количество пакетов для расширения функциональности.

Заключение

Symfony, Laravel и Yii2 можно назвать отличными инструментами для разработки веб-приложений. Автор оригинальной статьи предпочитает Laravel. В то же время он считает Symfony и Yii2 не менее мощными инструментами. Особенностью Symfony можно назвать развитое сообщество, а особенностью Yii — надёжность и безопасность.

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

Адаптированный перевод статьи Michael J. Garbade How to choose a PHP framework. Мнение автора оригинальной публикации может отличаться от мнения администрации и сотрудников Хекслета.

Laravel или Symfony: выбираем фреймворк для создания сайта

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

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

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

1. Структура

Symfony состоит из множества различных модулей и компонентов, каждый из которых отвечает за какой-то отдельный аспект функциональности. К примеру, компонент для обработки HTTP-запросов, компонент для работы с консолью, для работы с CSS и JS, диспетчер событий и т.д.

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

2. Настройки конфигурации

Конфигурировать настройки приложения (в частности, название и тип СУБД, параметры подключения к ней и многое-многое другое) в Symfony можно посредством трех основных форматов – PHP, XML, YML.

Наиболее прогрессивным и минималистичным считается YML – именно он используется по умолчанию в новом проекте. Что касается Laravel, то здесь присутствует лишь один формат конфигурации – PHP. С одной стороны, это хорошо для начинающих программистов, так как не нужно разбираться в других форматах. С другой стороны, теряется гибкость конфигурирования. Да, и конечный результат может получиться достаточно громоздким и менее наглядным, чем в Symfony.

3. Обработка запросов HTTP

Перед попаданием на сервер все запросы от клиента проходят обработку, причем, в несколько стадий. У Symfony для этих целей используются так называемые события ядра или kernel events.

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

4. Работа с базой данных

В Symfony для упрощения работы с БД используется Doctrine ORM – реляционный проектор, позволяющий работать с данными в объектном стиле. Это позволяет значительно сократить объем кода, необходимого, к примеру, для совершения выборки из базы или вставки новой порции данных. Также Doctrine позволяет писать код, абстрагируясь от конкретного типа СУБД, используемой на проекте (MySQL, PostgreSQL и т.д.).

Кроме того, при использовании ORM разработчику совсем необязательно владеть синтаксисом базы данных, так как все низкоуровневые операции выполняются “под капотом”. Что касается Laravel, то тут для работы с базой используется собственная библиотека под названием Eloquent. Это не полноценный ORM, работать с ней гораздо проще (особенно для новичков).

5. Работа с View Layer (шаблонизатор)

В том и другом фреймворке для рендера веб-страниц используются так называемые шаблонизаторы. В Symfony в этой роли выступает Twig, а в Laravel – Blade. Шаблонизатор позволяет гибко управлять данными при их отображении на странице сайта, форматировать их, выводить веб-формы, обращаться к внутренним сервисам или даже к БД, если этого требует логика.

По сути, Twig и Blade очень похожи, но первый отличается большей строгостью к обработке и фильтрации данных, которая выполняется в коде шаблона. К примеру, в Twig нельзя использовать “голый” PHP-код. Вместо этого можно задействовать фильтры.

6. Порог вхождения

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

Выводы

Руководствуясь описанными выше критериями сравнения, попробуем подвести итоги и понять, в каких случаях при создании веб-приложения выгодно использовать Laravel, а в каких – Symfony.

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

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

Какой фреймворк PHP выбрать: Symfony, Laravel или Yii

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

PHP широко используется в крупных проектах. Facebook, например, использует PHP для поддержания и создания своих внутренних систем. WordPress использует PHP для питания своих внутренних компонентов, что в свою очередь приводит в действие более 26% интернета . В настоящее время PHP поддерживает более 82% веб-сайтов (чьи серверные языки программирования сайт Web Technology Surveys может отслеживать).

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

Зачем выбирать PHP-фреймворк?

Какой смысл использовать фреймворк вместо необработанного PHP для разработки приложения? Некоторые преимущества использования фреймворка включают:

  • PHP-фреймворк ускоряет разработку. Например, вам не нужно писать сложные запросы для извлечения данных из базы данных. Фреймворки PHP предоставляют операции CRUD (создание, чтение, обновление и удаление).
  • Платформы позволяют разработчикам легко масштабировать системы.
  • Обслуживание кода проще, чем с ванильным PHP-приложением. Код приложения лаконичен и прост в работе.
  • Модель MVC обеспечивает быстрое развитие.
  • Фреймворки лучше защищают веб-приложение от распространенных угроз безопасности.
  • Принцип “Не повторяйте себя” гарантирует, что минимальный код имеет максимальное влияние.

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

Как выбрать PHP фреймворк

Ответы на несколько вопросов помогут вам выбрать структуру:

  1. Каковы особенности и функциональность фреймворка? (Предлагает ли он то, что мне нужно?
  2. Какова кривая обучения в рамках?
  3. Насколько масштабируема инфраструктура?
  4. Активно ли развивается и поддерживается основная группа?
  5. Оказывает ли рамочная программа долгосрочную поддержку (поддержку LTS)?
  6. Имеет ли фреймворк сильную поддержку сообщества?

Symfony, Laravel и Yii

Прежде чем погрузиться в техническую специфику, вот краткий обзор претендентов:

Фреймворк symfony

Symfony-это набор многократно используемых компонентов PHP, позволяющих разработчику создавать масштабируемые высокопроизводительные приложения. С 30 компонентами, из которых можно выбрать, разработчик имеет полную свободу экспериментировать и работать в среде RAD. API Symfony также обеспечивают простую интеграцию со сторонними приложениями и могут использоваться с популярными интерфейсными фреймворками, такими как AngularJS.

Многие популярные проекты , включая Drupal и phpBB, также используют фреймворк Symfony. На самом деле, Laravel, самый популярный PHP-фреймворк, построен на Symfony.

Laravel

Laravel, который известен как” PHP framework для веб-мастеров”, предлагает отличное сообщество и выигрывает как самый популярный фреймворк . (Один из ведущих разработчиков Laravel Livecoding.tv это Sfiskell .

В мае 2015 Laravel объявила, что версия 5.1 предложит долгосрочную поддержку в течение двух лет. Версия 5.2 вышла в декабре 2015 года. Многие хостинговые компании предоставляют поддержку Laravel и предлагают решения для хостинга приложений Laravel. Ознакомьтесь со встроенным сайтом Laravel, чтобы увидеть отличные примеры проектов.

Созданный Qiang Xue в 2008 году, Yii является безопасным, быстрым, высокопроизводительным приложением / веб-разработкой. Yii использует Composer dependency manager для PHP для обработки различных зависимостей и установок (подробнее об этом позже). Yii также является самым быстрым фреймворком PHP, благодаря технике ленивой загрузки.

Еще одной отличительной особенностью Yii является интеграция jQuery. Интеграция позволяет интерфейсным разработчикам быстро охватить фреймворк и использовать строительные леса для генерации кода. Подобно Symfony, Yii также использует компоненты для быстрой разработки приложений.

Как они сравнивают

Все три фреймворка отлично подходят для создания приложений Web 2.0, но каждый фреймворк служит своей цели. Давайте посмотрим на их особенности и как они складываются.

Механизм шаблонов

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

Система шаблонов Symfony

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

Веточка делает то же самое со следующим кодом:

Фреймворк Laravel

В отличие от других систем шаблонов, Blade позволяет использовать PHP-код в представлениях. Кроме того, Blade имеет нулевые накладные расходы на производительность приложения, поскольку файлы представления blade хранятся .blade.php extension . Весь код в файлах представления преобразуется в необработанный PHP во время обработки.

Система шаблонов по умолчанию Yii

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

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

Различия в рамках

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

Yii использует структуру MVC. (Symfony предоставляет поддержку MVC, которая более подробно обсуждается в Symfony2 a MVC framework на сайте blog.sznapka.pl.

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

Если вы ищете модульную структуру, перейдите на Symfony. В противном случае, Laravel и Yii оба большие выборы.

Установка

Эти три платформы обеспечивают несколько процедур установки. Если вы используете Composer для обработки пакетов, вы будете рады узнать, что все фреймворки могут быть установлены через Composer.

Для Symfony роль композитора более важна. Идея обработки компонентов лучше всего сделать с помощью Composer PHP dependency manager .

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

После установки Yii предоставляет веб-приложение и базовый шаблон для работы. Symfony 2 также предоставляет демо-приложение для начала работы.

Laravel также легко установить с помощью Composer create-project или через Laravel Installer. Дополнительные сведения см. В руководстве по установке Laravel.

Быстрое развитие

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

Производительность

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

Социальные сети являются ярким примером событий в реальном времени, и один из наших звездных стримеров , jadson, построил мобильную социальную сеть с использованием Yii2. Когда дело доходит до выбора лучшей структуры для кодирования высокопроизводительного приложения, Yii выделяется как самая быстрая структура PHP в нашей партии.

Производительность Laravel весьма спорна. Это медленнее всего, но разве это имеет значение? Вы найдете онлайн-ресурсы для ускорения производительности, в том числе руководство по GitHub для ускорения работы приложения Laravel.

Поддержка баз данных

Symfony 2 предлагает лучшую поддержку баз данных. Вы можете работать с массивом баз данных, включая NoSQL и DynamoDB. Yii и Laravel также полезны в этом отношении, но они поддерживают меньше баз данных, чем Symfony. База данных, поддерживаемая каждой платформой, показана в Таблице 1.

Рамки Laravel Yii Symfony 2
База данных Microsoft BI MongoDBMySQL PostgreSQL RedisSQLite Microsoft BI MongoDBMySQL Oracle PostgreSQLSQLite Apache Jackrabbit CouchDB DynamoDB GemFire GraphDB MemBaseMemCacheDB Microsoft BI MongoDB MySQL NoSQL Oracle PostgreSQL

Сообщество и ресурсы

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

Когда дело доходит до изучения материала и документации, Laravel выделяется, хотя Symfony и Yii не отстают далеко:

Продолжаемость

Фреймворки-это структуры, которые могут быть расширены с помощью расширений или пакетов, улучшая их функциональность и объем. Когда дело доходит до расширений, Laravel является победителем. Packalyst, каталог пакетов Laravel, предлагает более 9000 пакетов. Yii и Symfony, с другой стороны, предлагают около 2800 расширений и 2830 пакетов , соответственно. С трехкратным числом расширений Laravel кажется лучшей структурой в этом отношении.

Сходные элементы

Мы рассмотрели различия между рамками. Теперь давайте посмотрим на их сходство:

  • Все три фреймворка являются фреймворками PHP с полным стеком и предлагают функциональные возможности для создания веб-приложения, от написания интерфейсного кода до извлечения данных.
  • Проекты с открытым исходным кодом и их исходный код можно найти на GitHub, что делает его легким для любого внести свой вклад:
    • Фреймворк symfony
    • Laravel
    • Yii
  • Рамки хорошо документированы и поддерживаются большими сообществами.
  • Каждый из них поддерживает ORM (сопоставление отношений объектов). ORM очень популярен для написания кода OO для вашего приложения.
  • Они надежны, безопасны и надежны для создания приложений Web 2.0.

Все еще застрял? Возможно, эти контрольные списки помогут вам сузить выбор:

Фреймворк symfony:

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

Yii:

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

Laravel:

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

Вывод

В битве Symfony vs. Laravel vs.Yii все три фреймворка PHP являются отличными вариантами, которые обеспечивают среду разработки с полным стеком для разработчиков. Для меня Laravel – победитель, который отлично себя проявляет и не подает признаков остановки в развитии.

Тем не менее, Symfony и Yii – отличные фреймворки. Symfony хорошо зарекомендовала себя и с большим, более зрелым сообществом.Yii-это уникальная структура, которая является надежной, безопасной и выполняет свою работу.

Выбор PHP фреймворка: Laravel глазами Symfony разработчика

автор Андрей Токарев

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

Особенность проекта состояла в том, что в основном нам предстояла работа через SoapClient с веб-сервисами. C их помощью строился интерфейс для взаимодействия пользователя и небольшой части ERP системы. Никаких сложных структур под бизнес-требования строить не требовалось. Работа с БД ограничивалась хранением данных для авторизации пользователей и поддержанием нескольких таблиц с настройками. В то же время система изначально не подразумевала дальнейшего развития во что-то большое и сложное. По сути, требовалось реализовать тонкий клиент для работы с сервером веб-сервисов.

Нельзя сказать, что Symfony не подходил для решения задач проекта, но меня смущало количество кода, которое надо было написать, чтобы он был “Symfony way”. Поэтому я решил посмотреть в сторону более простых инструментов.

Мой выбор пал на Laravel. Если судить по отзывам в интернете, он достаточно прост в освоении, имеет большое комьюнити и хорошо показывает себя в реализации небольших и простых проектов. Чего греха таить, меня прельстило использование компонентов Symfony в фреймворке, и я давно хотел посмотреть насколько эффективно они используются в рамках других проектов.

Laravel полностью оправдал мои ожидания:

  • Довольно легко и быстро устанавливается
  • Прост и удобен в разработке
  • Можно сразу же начать писать промышленный код

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

Laravel

Фреймворк — это некий скелет структуры проекта, предоставляющий реализованный функционал “из коробки”. Данный функционал позволяет решать наиболее типичные задачи при разработке. Архитектура фреймворка может как реализовывать некий собственный набор паттернов, так и представлять собой реализацию отдельных общеизвестных паттернов.

Архитектура Laravel строится вокруг популярного в последнее время принципа Inversion of Control >> Dependency Injection >> Service Container. Этот принцип хорошо знаком разработчикам Symfony, т.к. является краеугольным камнем всей Symfony разработки.

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

Более подробно о принципе Inversion of Control и паттернах его реализующих (DependencyInjection >> Service Container; и (анти)паттерне ServiceLocator) можно посмотреть здесь:

Laravel использует часть компонентов Symfony. Это не означает, что компоненты внедряются “копипастом” и, соответственно, работают по принципу «достаточно только прочитать документацию оригинала и можно использовать». Скорее компоненты удачно вплетены в структуру фреймворка, где-то немного изменены (обернуты), где-то дополнены и подстроены для соответствия “экосистеме” фреймворка. На самом деле, это достаточно логично, т.к. многие компоненты Sf поставляются как готовый к использованию код и хорошо решают задачи, которые ставятся перед фреймворками на общем уровне.

Компоненты фреймворков: сравниваем Laravel и Symfony

Так как я симфонист и смотрю на все глазами симфониста, то попытаюсь сравнить решения фреймворков Laravel и Symfony.

HTTP fundamentals & MVC pattern (Controllers, Routing, Views)

Итак, давайте вернемся к корням веб-разработки, в частности к протоколу HTTP. Что бы не делал ваш серверный код, в конечном итоге он должен получить какой-то запрос, обработать его и вернуть определенный ответ. Если использовать plain PHP, можно довольно легко запутаться, например, с телом ответа и возвратом заголовков ответа. Если вы уже давно в разработке, то стоит упомянуть “Headers already sent” и вы сразу всё поймёте.

Чтобы избежать проблем подобного рода, можно сэмулировать работу с запросом и ответом как работу с парой соответствующих классов (объектов). Компонент HTTPFoundation Symfony служит именно этой цели. Он же используется в Laravel и позволяет эмулировать работу на уровне HTTP протокола. Прост и удобен в использовании. За примерами использования welcome в документацию.

Паттерн MVС всем хорошо известен, поэтому достаточно сказать, что в Laravel он реализован. Реализован весьма стандартно: есть привычные контроллеры с actions, отдельный уровень с представлением, с использованием шаблонизатора и всё, что понимается под моделью.

Простой экшен в контроллере может выглядеть примерно так:

Здесь мы проверяем, авторизован ли пользователь, и меняем его пароль. Стоит обратить внимание, что экшен принимает в качестве аргумента объект класса Request, который в свою очередь унаследован от класса Request, идущего в составе HTTPFoundation Symfony:

ORM Eloquent vs. Doctrine ORM

Довольно стандартной задачей при веб-разработке является сохранение объектов в базу данных и чтение из базы данных. Для работы с БД используются так называемые Модели. В Laravel процесс работы с БД осуществляется посредством ORM Eloquent.

Eloquent использует паттерн Active Record, который значительно проще паттернов DataMapper, Unit of Work и Identity Map. Последние используются в ORM Doctrine, которая является базовой ORM для Symfony. Работа с Eloquent за счет простоты имеет множество преимуществ. Пожалуй, самые главные: немногословность при описании моделей и простота использования в коде. При создании модели вовсе не обязательно описывать каждый аксессор, достаточно обратиться к свойству по названию поля в БД.

Пример работы с Eloquent (из официальной документации):

Простота имеет и обратную сторону – по умолчанию, подсказок в IDE не стоит ждать из-за отсутствия описанных методов/свойств. Эту проблему помогает решить laravel-ide-helper, который генерирует комментарии к моделям.

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

Artisan vs. Console Commands

Как и практически в любом современном фреймворке, в Laravel есть мощный инструмент для работы с консолью. В Laravel этот компонент называется Artisan (ремесленник, мастер). Он предоставляет широкие возможности по выполнению различных рутинных операций. В основном там сосредоточены генераторы кода (миграции, модели, контроллеры, слушатели и другие). С помощью artisan можно управлять очередями задач, выполнять операции по расписанию, очищать кеши, и много что ещё. Помимо этого, очень легко писать свои команды. Для этого надо создать класс команды и зарегистрировать его. Также можно создавать цепочки из команд, вызывая их друг из друга.

Например, если мы хотим создать новую модель, то нам достаточно запустить в консоли следующую команду:

$ php artisan make:model User

Artisan немногим отличается от стандартных консольных компонентов других фреймворков. Важно знать, что он есть и он работает. Моя любимая команда php artisan inspire :).

Service Container

Как я уже упоминал ранее, архитектура Laravel построена на базе паттерна Service Container. В целом, его реализация очень похожа на реализацию в Symfony, хотя есть небольшие отличия.

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

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

Templating: Blade vs. Twig

Представление реализовано на базе шаблонизатора Blade. Это обычный шаблонизатор. Присутствуют встроенные операторы (вроде if), возможно переопределение частей шаблонов, есть удобные генераторы для получения html блоков, можно провести доступ до нужных сервисов, можно даже написать собственную директиву.

Blade показался показался мне менее удобным, чем Twig. Хотя фреймворк Laravel в целом значительно проще Symfony, именно шаблонизатор для Symfony, на мой взгляд, выглядит проще для освоения.

Debug and error handling

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

Можно сказать, что создатели фреймворка Laravel достаточно позаботились о разработчиках: кроме дебаг панели, система может логировать все, что в ней происходит, присутствуют автогеренаторы кода. Также предусмотрена специальная функция dd для вывода ряда данных в процессе разработки на экран.

Выводы

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

Для установки фреймворка и работы со сторонними библиотеками используется composer, так что установка и обновление внешних библиотек не представляет особых трудностей. Отдельно стоит обратить внимание на производительность Laravel. Фреймворк несложный и, соответственно, по большей части быстрый. Каких-то специальных бенчмарков я не использовал, но по ощущениям и беглым взглядам на дебаг панель (ах да, там ещё можно увидеть общее время выполнения скрипта) выигрыш в скорости очевиден.

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

Напоследок хочу добавить, что фреймворк (надо отдать честь его разработчикам) на практике оказывается ровно таким, каким его позиционируют. Это простой и удобный инструмент для “мастеров” в тех случаях, когда им не нужно ударяться во все тяжкие энтерпрайза.

  • Поделиться в Facebook
  • Share on Linkedin
  • Запостить в Twitter
  • Сохранить в Pocket
  • 0 Репосты

Подпишитесь

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

Источники:

http://arduinoplus.ru/laravel-ili-symfony/

http://www.make-info.com/how-to-choose-php-framework-laravel-yii-symfony/

http://www.azoft.ru/blog/php-framework-laravel-vs-symfony/

http://electricalschool.info/electronica/1958-oblasti-primenenija-mikrokontrollerov.html

Ссылка на основную публикацию