Yii VS Laravel: за каким фреймворком будущее

На западе популярнее Laravel, в СНГ - Yii. Команда Artjoker решила выяснить, стоит ли гнаться за зарубежными трендами или же нет. На каком фреймворке разрабатывать сайты?

Дисклеймер. В статье мы озвучиваем свое субъективное мнение, основанное на личном опыте и сравнительном анализе. Если вы не согласны, спецы Artjoker с удовольствием подискутируют ;)

Натолкнулись на статью 2017 года о востребованности PHP программистов на рынке труда. Да, она - старая, но в 2018 картина изменилась не существенно. В материале приведена интересная зависимость количества вакансий от типа фреймворка.

Диаграмма для СНГ -

Данные по западному рынку -

Зачем мы приводим эту информацию? Она позволяет сделать выводы как заказчикам, так и исполнителям.

Рассмотрим обе стороны. Если вы программист и хотите быть востребованным, вам необходимо либо:

  • осваивать популярные инструменты;
  • смотреть в завтрашний день и выбирать перспективные направления.

Если вы заказчик, вам стоит держать в фокусе несколько моментов:

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

Именно поэтому важно сравнивать фреймворки. Посмотрите на диаграммы еще раз. CodeIgniter можно смело исключить. Он некогда был на волне, а сейчас его вытеснили более прогрессивные решения. Большое количество заказов объясняется наличием проектов, которые нуждаются в саппорте. Со временем владельцы сайтов переедут и спецы по CodeIgniter останутся без работы.

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

Плюсы и минусы Laravel

Преимущества Laravel

  • удобно читаемые Laravel-коллекции и хелперы по работе с ними;
  • storage - отдельное место в структуре для хранилища;
  • eloquent - ORM для работы с базой, реализация шаблона ActiveRecord. Помимо стандартных CRUD-операций, в ней есть: методы доступа и мутаторы, безопасное удаление, области запросов, отношения, наблюдатели модели;
  • artisan - позволяет управлять командной строкой,
  • простая маршрутизация, валидация входящих параметров;
  • интегрированный сборщик scss и скриптов (elixir);
  • интегрированный шаблонизатор Blade;
  • очереди заданий, планировщик задач;
  • миграции и сиды;
  • интегрированная система модульного тестирования phpunit;
  • поддержка WebSockets для создания настоящих интерактивных приложений;
  • ACL плагины;
  • высокая популярность на западе;
  • частые релизы новых версий.

Недостатки Laravel

  • отсутствуют интегрированные шаблоны интерфейсов.

Личное мнение

“Love beautiful code? We do too” - цитата с официального сайта соответствует действительности. Laravel - клад для любителей красивых решений. Код читается легко, структура файлов будет ясна даже новичку. Кстати, есть потрясные видеоуроки, основы бесплатные.

Laravel - дружественный фреймворк. Встроенные artisan-команды здорово ускоряют процесс разработки.

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

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

Что нужно знать заказчику о Laravel

Выбирая Laravel, вы получаете наиболее перспективный (на сегодняшний день) PHP-фреймворк. Проекты на нем, при грамотной разработке, легко расширяются.

Плюсы и минусы Yii

Преимущества Yii

  • Active Form - создание форм по свойствам модели;
  • использует общепринятую архитектуру и методы;
  • интегрировано множество стандартных решений для интерфейсов (Kartik);
  • встроены автотесты форм и безопасности;
  • сравнительно просто изучить;
  • реализован визуальный генератор CRUD, контроллеров, моделей (gii).

Недостатки Yii

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

Личное мнение

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

Что нужно знать заказчику о Yii

Разработка отдельных проектов ускорится в среднем быстрее на 10% (из личного опыта).

Таблица сравнения возможностей

*- относительный параметр (из личного опыта).

Какой фреймворк лучше: Laravel или Yii

Когда речь заходит о надежности и Yii, и Laravel стоят на равных. Фреймворки обеспечивают безопасность на нескольких уровнях (включая пароли, аутентификацию, SQL-инъекции, кросс-сайтную подделку запросов, скрипты сайта и т. д.)

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

0
29 комментариев
Написать комментарий...
Александр Ерёмин

На хабре этот мусор бы заминусили конечно). В статье фреймворк рассматривается ни как инструмент, а как тренд. Но особенно доставило сравнение Laravel и Yii2.

Я использовал как Yii2, так и Laravel в работе. Но автор судя по всему в Yii2 дальше quickstart не заглядывал, ибо большинство преимуществ, которые приписали в Laravel, реализованы в Yii2

удобно читаемые Laravel-коллекции и хелперы по работе с ними;

ArrayHelper в Yii2

storage - отдельное место в структуре для хранилища;

Yii2 не навязывает вам конкретную директорию, создайте себе любую и просто пропишите алиас

eloquent - ORM для работы с базой, реализация шаблона ActiveRecord...

аналогичный функционал есть и в Yii2. С отношениями и прочими плюшками

миграции и сиды;

Ага, и в Yii2тоже

интегрированная система модульного тестирования phpunit;

Тоже есть. И codeception вдогонку

ACL плагины;

RBAC в Yii2 ничем не хуже

частые релизы новых версий.

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

Теперь о "преимуществах" Yii2

Active Form - создание форм по свойствам модели;

Это скорее минус Yii2. ActiveForm подойдет разве что для формошлёпов. В валидаторах activeForm мешанина из php и jquery. С кастомизацией всегда будет боль.

использует общепринятую архитектуру и методы;

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

сравнительно просто изучить

Сравнительно с чем? У Laravel ничуть не хуже документация.

Про минусы Yii2

новые версии выходят редко;

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

склеенные библиотеки фронта и бэка;

В большинствах модулей с бекендом и фронтендом можно (в шаблоне Advanced) замапить в конфигах и разделить фронт и бэк части.

недостаточно гибкий процесс формирования роутов.

Не хуже чем в Laravel. И группировка есть и фильрация, нормализация роутов. Динамические роуты и кастомные классы обработчики тоже можно реализовывать.

редко выходят новые релизы.

Про это уже было.. Исправления безопасности и некоторые улучшения в yii2 выпускаются регулярно и это главное. А мажорные сырые релизы каждые полгода, исправляющий одни баги и добавляющий другие не нужны. Это не преимущество.

Из этого можно сделать вывод, что автор что то видел в Laravel и где то слышал про Yii2. Никакой объективности в этой статье нет. Статья — мусор!

Ответить
Развернуть ветку
Ренато Халимов

Красава!
Хотел, написать отзыв подобный, смотрю, а меня опередили.
Соглашусь с автором, что Lara - красивее. Для меня это важно. Доводилось поддерживать не один десяток огромных проектов на yii2. И практически везде одна и та же история - кто-то пытался сделать хорошо сначала, а потом Остапа понесло... На Laravel проектов было не меньше, но симптомы не столь печальные. Теория разбитых окон на лицо.

Ответить
Развернуть ветку
Volodymyr Freeman

Все очень просто, если вы хотите получать за работу доллары США - ваш выбор Laravel
если рубли/тенге/гривны - Yii
Выбор очевиден

Ответить
Развернуть ветку
Denis Alliswell

Как по мне, наиболее точный комментарий на тему выбора на каком фреймворке писать.
Еще сюда можно добавить, если евро - Symfony =)

Ответить
Развернуть ветку
Kirill Pankin

За WordPress.
^_^

Ответить
Развернуть ветку
Volodymyr Freeman

Толсто

Ответить
Развернуть ветку
Kirill Pankin

:)
Нет. Просто небольшое дурачество.

Ответить
Развернуть ветку
Alexander Matveev

А вообще джинса

Ответить
Развернуть ветку
София Лупол
Автор

Спасибо за комментарий, изображение можно увеличить тапом)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Eвгений С

1. Замерить бы производительность хотя бы на примере типичного блога.
2. Что насчёт построения rest api у laravel? Yii2 по дефолту неплохо предлагает rest фишки
3. Что насчёт фронтенда? Знаю у лары там webpack + vue вроде??
4. Что насчёт соответствия стандартам psr?
5. И все ж главную роль играет коре Тим и насколько много времени и сил у них находится на разработку такого громадного опенсорс проекта? То что yii2 немного тормозит с развитием не айс.

Ответить
Развернуть ветку
Alexander Matveev

Громадный проект это не к фрилансерам, по данным которых статистика приведена. Для громадных смотрите на Symfony.

Ответить
Развернуть ветку
Eвгений С

Причем тут фрилансеры?

Ответить
Развернуть ветку
Roman Shalabanov

Графики в статье построены по данным Fl.ru и Upwork'а.

Ответить
Развернуть ветку
Eвгений С

А причем тут графики и мои вопросы?

Ответить
Развернуть ветку
Roman Shalabanov

Этот вопрос не ко мне, я отвечал на вопрос "Причем тут фрилансеры?"

Ответить
Развернуть ветку
Александр Братко
Натолкнулись на статью 2017 года о востребованности PHP программистов на рынке труда.

1. Кто автор? На сколько этим данным можно доверять? Это статистика каких-то сервисов по поиску вакансий или что?
2. В статье по ссылке идёт речь о фрилансерах, это не одно и тоже, что рынок вакансии и соискателей. Как минимум, потому что проекты в этих сферах разного уровня.

Вот так и появляются в сети новости про российских хакеров.

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Кроко

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

Ответить
Развернуть ветку
Nikolay Kozlov

«отсутствуют интегрированные шаблоны интерфейсов.»

Думаю, это плюс, а не минус. В Yii2 гвоздями прибит bootstrap 3 с jquery. А благодаря инструменту генерации CRUD-интерфейсов, у всех сайтов на Yii2 можно наблюдать одинаковый мерзкий безвкусный UI для админок.

Ответить
Развернуть ветку
Andrew Solovov

Ставьте свое или выбирайте из десятков gii расширений. Сам использую админку metronic

Ответить
Развернуть ветку
Фёдор Гребенников

Спасибо за наводку на интересный продукт - metronic понравился

Ответить
Развернуть ветку
Фёдор Гребенников

Yii2 - основной инструмент в проектной разработке у нас, ~3 года.
7 из 10 проектов - без bs3 и jQuery на фронте.
Админки бывали разные - на Semantic UI, Pages UI Dashboard, IView/Element UI (Vue JS), bootstrap 4, ну и 3, конечно.
bootstrap 3 с jquery не гвоздями прибиты точно. Но очень ждём полноценного релиза Yii3, где их нет, определенные "пустые" трудозатраты приходится регулярно выполнять.

Ответить
Развернуть ветку
Кроко

Joomla!

Ответить
Развернуть ветку
Коля Павельев

Ща использую Yii2 только как REST сервер, хотя когда-то от него фанател.

Мир изменился кардинально, веб могут отдавать голые фронтенд фреймворки на ssr со сравнимой скоростью, да, есть неудобства с какой-нибудь авторизацией или разделения прав, но есть и куча готовых npm модулей, для остальных задач (т.е. обработка данных) есть куда более практичные и скоростные языки. Не знаю что будет с пхп через 10 лет, для него просто не осталось задач, которые он мог бы эффективно делать, даже REST требует постоянного переподключения к базе с каждого потока. А тут ещё и 1 поток = 1 запрос, оверхед гигантский.

Ответить
Развернуть ветку
Roman Shalabanov
что будет с пхп через 10 лет

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

Ответить
Развернуть ветку
Коля Павельев

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

Это на самом деле огромная попытка перезагрузить язык с нуля. Потянет ли он это, когда уже есть готовые конкуренты на этом поприще? Но сообщество большое и оно канех попробует.

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

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
WhiteMan

Поинтересовавшись данными Google Trend на тему PHP-фреймворков можно открыть много неожиданного. Нужно хоть иногда выбираться из своей деревни. ♠

Ответить
Развернуть ветку
26 комментариев
Раскрывать всегда