yii или laravel что лучше
Какой PHP-фреймворк выбрать: сравниваем Symfony, Laravel и Yii2
В этой статье рассматриваются три наиболее популярных PHP-фреймворка: Symfony, Laravel и Yii2. Автор сравнивает их возможности и пытается помочь читателю выбрать лучший инструмент. Статья предназначена для начинающих разработчиков, которые ещё не работали с PHP-фреймворками.
Зачем нужен PHP-фреймворк
PHP — один из самых популярных и востребованных языков программирования. Его активно используют крупные проекты, например, Facebook и «ВКонтакте». На PHP написаны популярные системы управления контентом (CMS), в том числе WordPress. На этом движке работает около трети всех сайтов в интернете и около 60 % сайтов на CMS.
PHP развивается, а версия 7 сделала этот язык стабильным. В таком случае, зачем нужны фреймворки и почему их часто используют вместо нативного языка? Вот несколько причин:
Нативный PHP позволяет делать приложения. Но перечисленных выше преимуществ достаточно, чтобы обратить внимание на фреймворки.
Полезная информация Почему Django — лучший фреймворк для разработки сайтов: статья о характеристиках и особенностях популярного веб-фреймворка.
Как выбрать PHP-фреймворк
Выбрать фреймворк помогут ответы на следующие вопросы:
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
Этот фреймворк не использует сторонних шаблонизаторов по умолчанию. Но разработчик может выбирать инструменты в зависимости от решаемых задач. В число рекомендуемых шаблонизаторов входят Twig и Smarty.
Промежуточный вывод: по данному критерию чистого победителя нет. Все фреймворки поддерживают работу с шаблонизаторами, что ускоряет разработку фронтенда приложений. Небольшое преимущество имеет Yii2, так как в нём не используется какой-либо шаблонизатор по умолчанию.
Изучайте Laravel на Хекслете Курс по Laravel входит в профессию «PHP-программист». Первые курсы в профессии доступны бесплатно после регистрации.
Модульность
В 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 расширениями соответственно. Если для вас важна возможность расширить стандартную функциональность фреймворка с помощью дополнительных пакетов, выбор очевиден.
Схожесть характеристик
Выше мы рассматривали разницу между фреймворками. Пришло время сосредоточиться на похожих характеристиках. Вот они:
Всё ещё не можете выбрать фреймворк? Вот тезисная информация, которая поможет определиться.
Заключение
Symfony, Laravel и Yii2 можно назвать отличными инструментами для разработки веб-приложений. Автор оригинальной статьи предпочитает Laravel. В то же время он считает Symfony и Yii2 не менее мощными инструментами. Особенностью Symfony можно назвать развитое сообщество, а особенностью Yii — надёжность и безопасность.
Пожалуйста, напишите в комментариях, какой PHP-фреймворк выбираете вы.
Адаптированный перевод статьи Michael J. Garbade How to choose a PHP framework. Мнение автора оригинальной публикации может отличаться от мнения администрации и сотрудников Хекслета.
Laravel или Yii2 что выбрать
Я соло разработчик. С 2009 года зарабатываю тем что делаю и развиваю сайты. В основном это контентные сайты на WordPress. Однако кроме контентных есть и крупные проекты где нужно создавать коммьюнити и WordPress для этого категорически не подходит. Также есть у меня и микросервисы, где текстовый контент не используется. Раньше сервисы я писал на CodeInteger, а когда он «приумер» начал искать ему замену. И, году в 2014, я начал использовать Yii. Тогда это был 1.1, если не ошибаюсь. Когда вышел Yii2 все проекты были переписаны на него, сейчас первую ветку не использую нигде. По сравнению с CodeInteger даже первый Yii был даже не шагом — прыжком вперед и вверх. Не было никаких сомнений после перехода (хотя разрабатывать микро! сервисы на CI безусловно легче). И на январском штиле решил попробовать Laravel. Сделал маленький сервис, залил его на snippets.azzrael.ru (просто для теста, это не юзерский сервис). По итогам этого теста и родилось желание написать заметку.
Зачем сравнивать Laravel vs Yii
Последние годы я много раз натыкался на сравнения Yii vs Laravel. Видел красивые графики востребованности фреймворков, где Yii обычно лихо проигрывает.
Простые поиски по yii vs laravel в феврале 2020 дали такие результаты:
Upwork.com : yii = 83 jobs, laravel = 822 jobs
hh.ru: yii = 247 вакансий, laravel = 259
Google Trends вообще показал что Yii никому за пределами России не интересен, да и в России интерес стабильно падает.
Каждому свое
Итак дано — я соло, у меня нет нанимателей, коллег и сотрудников. Это дает с одной стороны свободу стека, с другой стороны необходимость в стеке позволяющего легко повторно использовать код, легко рефакторить код, дающем четкую и понятную структуру проектов с минимальным количеством зависимостей, длинную и глубокую поддержку старого кода (новые версии не должны ломать совместимость), минимум сторонних технологий с которыми нужно разбираться, полная поддержка проекта в PhpStorm (с подсветкой всего чего только можно).
Если кратко — Laravel мне весьма понравился. Если бы последние 6 лет я писал на Laravel и сегодня решил бы попробовать Yii2, то врядли бы я написал о нем в позитиве. В Laravel чувствуется бОльший потенциал и соответствие «духу времени». На нем можно вполне пилить стартапы со смузи и получать удовольствие. Буду ли я переписывать на него все свои проекты, как это было с CI, Yii1 на Yii2 — нет, не буду! Почему?
Почему останусь на Yii
Laravel хорошо подойдет команде. Удобные миграции, удобное отделение фронта от бэка (Webpack, шаблонизатор Blade), встроенный Laravel Homestead — все это поможет команде нормально работать. Но для соло это технологии которые только усложняют работу.
Мне не нужны миграции. Я в одно лицо прямо на проде меняю структуру в PhpMyadmin. Мне не нужно ничего никуда коммитить. Вся структура потом просто в модели.
Мне не нужен webpack и я не хочу ради него ставить npm с кучей зависимостей. Я не хочу в деве висеть с npm watch — меня вполне устраивает работать с дев версией ассетов и собирать их только в прод с помощью Yahoo compiller и простейшего bash скрипта.
Мне не понравились фасады из-за которых нужно танцевать с ide-helper, который будет генерить phpdoc и все равно не сгенерит их на 100%. Я так и не смог добиться автокомплита моделей и хелперов с шаблонах Blade, хотя во вьюхах Yii я просто подключаю нужный неймспейс и все автокомплитится.
Мне не понравился дебагбар Laravel, который выдает ошибку в компилированной вьюхе блейда и не возможно понять собственно что это за вьюха. И не возможность отдебажить Eloquent в SQL запрос включив в запрос байнды.
Шаблонизатор в PHP для меня вообще вещь не однозначная и холиварная. В мелких проектах ну не нужен он, хоть и прикольный.
Артизан, конечно, полезен своей универсальностью, но генератор Yii2 не заставляет тебя помнить команды и параметры — тут все на виду с кнопочками и подсказками.
Вообще Laravel сильно навязывает developers way, как мне кажется. Лучше чтобы разработка велась в стандартном окружении (Homestead, вагрант по сути), миграция+коммит, генерация стандартных роутов и русурсов и все это через артизан в консоли. Это не плохо, это наоборот хорошо в команде, где люди приходят и уходят, где нужно взаимодействие и понимание того что происходит в проекте. В Laravel нужно постараться чтобы сойти с Пути, в Yii2 этот путь нужно себе придумать и не забывать ему следовать, зато можно легко и быстро выкатывать в прод любую дичь.
В контексте вселенной дичь это плохо, но я тут деньги зарабатываю. 9 из 10 проектов занимают место на вдске полгода, после чего уходят в архив на год-два, после чего стираются без воспоминаний, так зачем усложнять? Те же проекты что выживают постепенно допиливаются, а с годами возникает желание их переписать (например как сейчас на Laravel).
Итого
В моем частном случае я не увидел необходимости не только переписывать старые проекты с Yii2 на Laravel (хотя в переписывании с Yii1 на Yii2, например, видел отчетливо), но и в принципе в смене стека.
Однако если вы про найм
То, на данном этапе, Yii выглядит как тупик. Складывается впечатление что с ним куда меньше перспектив в найме. Поэтому если вы хотите туда и выбираете что учить, то выбирайте Laravel (или лучше Symphony, но статья не про неё). Если же вы маленький стартап или инди и вам нужно скорее что-то выкатить, то подойдет и Yii2. Ну и ждем 3й версии Yii…
Ларавел против Йии
Разница между Laravel и Yii
Ниже приведены некоторые отличия Laravel от Yii:
Всякий раз, когда пользователь хочет выполнить проверку на основе сценариев, в Laravel нет доступных пакетов. Он не предоставляет никакой конструкции для проверки модели в различных сценариях. Yii может использоваться для назначения модели из параметров запроса, а также для ее проверки. Оба эти сценария можно управлять с помощью Yii. Вы можете настроить свой код согласно вашему требованию.
Для проверки на стороне клиента Laravel не поддерживает по умолчанию. Yii обеспечивает очень хорошую проверку форм на стороне клиента. Как только вы определите набор правил, его можно будет использовать как на стороне клиента, так и на стороне сервера.
При использовании Laravel пользователю необходимо объявить маршрут к каждому действию контроллера. Также защищен доступ к функции контроллера из любой точки мира, если маршрут уже определен. Laravel считает, что фреймворк должен обеспечивать маршрут по умолчанию. В Yii возможна простая маршрутизация, поскольку маршрут для каждого действия не требуется. Все действия маршрута выбраны по умолчанию.
Для панели администратора существует функция CRUD для различных таблиц, которые присутствуют. В Laravel нет поддержки по умолчанию для этого действия. У Yii есть специальный инструмент, известный как Gii, который предоставляет веб-интерфейс, в котором можно генерировать код в интерактивном режиме. В дополнение к этому, он также предоставляет интерфейс командной строки, который предпочитает работать в консольных средах.
У Laravel очень хорошо подготовленная документация. Он организован и написан в общем виде, так что каждый может его понять, а также хорошо усвоить. У Yii нет такой сильной документации, как Laravel. Используя документацию для Yii, вы можете легко начать с базового программирования и работать над ним.
Laravel используется многими людьми и, как результат, имеет большое сообщество, которое оказывает очень хорошую поддержку. Это сообщество растет с каждым днем. Yii, с другой стороны, появился раньше Laravel и имеет больше разработчиков, которые используют его, что приводит к большему сообществу по сравнению с Laravel.
Сравнение лицом к лицу между Laravel и Yii (Инфографика)
Ниже приводится топ-5 различий между Laravel и Yii:
Ключевые различия между Laravel и Yii
Оба Laravel против Yii являются популярным выбором на рынке; Давайте обсудим некоторые основные различия между Laravel и Yii: