Офтоп София Лупол
702

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 на реализацию дополнительного функционала уходит меньше времени. Аналогично с поиском багов. На наш взгляд, все дело в лаконичности.

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "София Лупол", "author_type": "self", "tags": [], "comments": 27, "likes": 7, "favorites": 23, "is_advertisement": false, "subsite_label": "flood", "id": 52013, "is_wide": false, "is_ugc": true, "date": "Wed, 28 Nov 2018 17:23:31 +0300" }
{ "id": 52013, "author_id": 218195, "diff_limit": 1000, "urls": {"diff":"\/comments\/52013\/get","add":"\/comments\/52013\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/52013"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791, "possessions": [] }

27 комментариев 27 комм.

Популярные

По порядку

Написать комментарий...
7

За WordPress.
^_^

Ответить
0

Толсто

Ответить
0

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

Ответить
4

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

Ответить
1

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

Ответить
3

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

Ответить
2

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

Ответить
0

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

Ответить
3

На хабре этот мусор бы заминусили конечно). В статье фреймворк рассматривается ни как инструмент, а как тренд. Но особенно доставило сравнение 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. Никакой объективности в этой статье нет. Статья — мусор!

Ответить
0

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

Ответить
2

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

Ответить
0

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

Ответить
2

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

Ответить
0

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

Ответить
1

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

Ответить
1

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

Ответить
1

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

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

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

Ответить

1

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

Ответить
1

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

Ответить
–1

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

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

Ответить
1

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

Ответить
0

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

Ответить
0

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

Ответить
0

Joomla!

Ответить
0

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

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

Ответить
0

что будет с пхп через 10 лет

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

Ответить
0

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

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

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

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Команда калифорнийского проекта
оказалась нейронной сетью
Подписаться на push-уведомления
{ "page_type": "default" }