Symfony vs Laravel: какой PHP фреймворк выбрать? | Umbrella IT

Symfony vs Laravel: какой PHP фреймворк выбрать?

 

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

Говорят о них много и часто, и, в основном, хорошо. Как же выбрать лучшее из хорошего? Об этом Umbrella расскажет сегодня в этой статье.

 

Почему мы решили рассказать именно об этих фреймворках?

 

С ОДНОЙ СТОРОНЫ,

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

PHP (Hypertext Preprocessor  – препроцессор гипертекста, первоначально Personal Home Page Tools), язык, который начинался как набор инструментов для разработки персональных веб-страниц, и сегодня остается для многих разработчиков основным инструментом для создания интерактивных и удобных в использовании веб приложений.

 

market position

Источник

 

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

На нем построены такие известные проекты как:

  • Wikipedia
  • Baidu
  • Yahoo!
  • Tumblr

 

С ДРУГОЙ СТОРОНЫ,

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

С этой точки зрения мы рассматриваем Symfony как своеобразный оплот стабильности.

За время своего существования Symfony 2 стал правилом хорошего тона в разработке на языке PHP, своеобразной классикой. Фреймворк достиг высокого уровня стабильности и продолжает развиваться.

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

 

ОДНАКО…

начиналось все именно с Symfony.

Laravel создан на его основе и впитал в себя многое от своего “родителя”.

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

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

 

ОСОБЕННОСТИ ФРЕЙМВОРКОВ

 

vogue

Vogue France  – создан с использованием Symfony

 

  • УСТАНОВКА

Чтобы установить фреймворк, скачиваем Symfony Installer. Для этого достаточно в любом удобном консольном приложении  выполнить следующую команду:

 

$ sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony

 

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

После завершения установки всех компонентов создаем новое Symfony приложение следующей командой:

 

$ symfony new my_project_name

 

Процесс установки для Laravel происходит так же. Только установщик скачиваем с помощью менеджера зависимостей (dependency manager) для PHP – composer. Для этого в консольном приложении выполняем следующие команды:

 

$ composer global require “laravel/installer”

$ laravel new my_project_name

 

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

 

 

  • КОНФИГУРАЦИЯ

Symfony поддерживает широкий набор форматов: PHP, YAML и XML. Можно выбрать либо наиболее подходящий для текущего проекта (например, XML используется как стандартный во многих крупных компаниях), либо тот который больше нравится разработчику.

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

 

  • ОСНОВЫ HTTP

Работа приложения представляет собой следующий процесс:

  • получении HTTP запроса сервером от клиента (Пользователь заполняет форму на сайте и нажимает кнопку Отправить);
  • обработка запроса сервером;
  • ответ на запрос (Пользователь видит сообщение “Вы успешно прошли регистрацию!”).

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

Например:

Вы хотите прочитать более подробную информацию на странице и кликаете “Читать дальше…” (то есть делаете запрос на переход к более подробному контенту).

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

В этих целях в  Laravel используются middlewares – уровни проверки, через которые проходит HTTP запрос на пути к приложению. Все запросы проверяются на соответствие определенным критериям. Если обнаружено несоответствие, запрос отклоняется.

В Symfony аналогичный процесс происходит с использованием механизма обработки событий ядра (kernel events). Здесь рассматриваются события, которые будут направляться на приложение. И такие события можно ограничивать при помощи фильтров.

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

 

zumic

Zumic –  создан с использованием Laravel

 

  • ШАБЛОНИЗАТОР

В качестве шаблонизатора (для обработки html-шаблонов для создания готовых html-страниц) в Symfony по умолчанию используется Twig, а в Laravel  –  Blade.

Оба шаблонизатора предлагают все что необходимо:

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

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

Blade в этом плане – более гибкий. Он разрешает писать PHP код в шаблоне, и его можно легко и бесконечно расширять.

 

  • БАЗЫ ДАННЫХ

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

  • возможность удобной работы с данными в приложении;
  • возможность практически без изменений в коде переключаться между СУБД (системы управления базами данных) (например: перейти с mysql на postgresql);
  • уменьшение числа ошибок разработчика при работе с  базой данных.

Разница между двумя фреймворками заключается  в том, что:

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

 

bla bla

BlaBlaCar  – создан с использованием Symfony

 

  • SERVICE CONTAINER

Symfony и Laravel используют схожую идеологию работы с сервисами.

Сервисом в языке PHP называют любой объект, который создан со специальной целью и отвечает за полное выполнение какой-либо универсальной задачи.

Например:
Отправка электронных писем из приложения.

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

Laravel не ставит перед разработчиком жестких рамок. Зачастую есть возможность слукавить и сделать что-то в обход модели. В этом случае сам разработчик решает, будет ли он поддерживать и сохранять архитектуру или нет.

 

  • ПОРОГ ВХОЖДЕНИЯ

Начинающему разработчику рекомендуется приступать к работе с PHP, вооружившись именно Laravel.

Этот фреймворк изначально заточен под простоту и удобство для разработчиков. Создатели Laravel попытались собрать в нем все самое лучшее. И судя по тому, что, начиная с 2015 г. Laravel называют самым популярным PHP фреймворком, с задачей они справились.

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

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

 

ikeyless

iKeylessсоздан с использованием Laravel

 

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

В то время как в плане поддержки и обновлений Laravel и Symfony сохраняют схожие позиции:

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

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

 

Вам нужно приложение, и вы хотите знать, как будет происходить разработка?

 

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

 

СПЕЦИФИКА ПРОЕКТА

 

 

Symfony рекомендуется для:

  • больших и сложных приложений уровня enterprise (уровня предприятия);
  • приложений, имеющих ключевое значение для бизнеса;
  • ERP приложений (планирование ресурсов предприятия).

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

 

laravel

 

Laravel рекомендуется для:

  • backend мобильных приложений;
  • типовых приложений;
  • небольших приложений/стартапов, предусматривающих быструю разработку,
  • для использования начинающими разработчиками.

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

 

То есть сначала четко определите, ЧТО будете делать. И потом уже решайте КАК.

 

Остались вопросы о специфике этих PHP фреймворков, или об их использовании? Свяжитесь с нами прямо сейчас!

 

Фото: Shutterstock.com


Ещё

  • Umbrella IT вошла в Топ веб и мобильных разработчиков
    Umbrella IT вошла в Топ веб и мобильных разработчиков
    Скейтбордисты и банджи-джамперы любят риск. Будоражащее кровь чувство опасности – именно то, что заставляет их сердца биться быстрее. Но когда дело касается представления своего бизнеса в интернете – зачем рисковать? Umbrella IT – надежный партнер. Мы были первым официальным партнером Symfony в России. Наш опыт и экспертизу давно ценят наши клиенты, а теперь – и …
  • Создаем приложение с механикой Uber: руководство по разработке проекта на миллион долларов
    Создаем приложение с механикой Uber: руководство по разработке проекта на миллион долларов
    Uber стал первым, кто применил бизнес-модель совместного потребления и экономику по требованию и взял на абордаж целый мир. Дестабилизация традиционного рынка такси не мешает Uber позиционировать себя, прежде всего, как технологическую, а не транспортную компанию. И это вполне оправданно – образцовый сервис и эффективные технические решения – именно то, что привело компанию к оглушительному успеху. …
  • Как увеличить вовлеченность в мобильных приложениях: 6 полезных советов
    Как увеличить вовлеченность в мобильных приложениях: 6 полезных советов
    Что заставит пользователей возвращаться в ваше приложение снова и снова? Как запустить работу приложения на полную мощность и сделать его незаменимым для всех и каждого? Десяток, а может и два десятка установленных на смартфон приложений, но пользуетесь в реальности всего несколькими из них? Совсем не хочется, чтобы ваше приложение попало в список “однажды открою, вдруг …