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 на реализацию дополнительного функционала уходит меньше времени. Аналогично с поиском багов. На наш взгляд, все дело в лаконичности.
На хабре этот мусор бы заминусили конечно). В статье фреймворк рассматривается ни как инструмент, а как тренд. Но особенно доставило сравнение 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 проектов было не меньше, но симптомы не столь печальные. Теория разбитых окон на лицо.
Все очень просто, если вы хотите получать за работу доллары США - ваш выбор Laravel
если рубли/тенге/гривны - Yii
Выбор очевиден
Как по мне, наиболее точный комментарий на тему выбора на каком фреймворке писать.
Еще сюда можно добавить, если евро - Symfony =)
За WordPress.
^_^
Толсто
А вообще джинса