Я соло разработчик. С 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 никому за пределами России не интересен, да и в России интерес стабильно падает.

Laravel vs Yii Google Trends

Laravel vs Yii Google Trends

Laravel vs Yii Google Trends

Laravel vs Yii Google Trends

 

Каждому свое

Итак дано – я соло, у меня нет нанимателей, коллег и сотрудников. Это дает с одной стороны свободу стека, с другой стороны необходимость в стеке позволяющего легко повторно использовать код, легко рефакторить код, дающем четкую и понятную структуру проектов с минимальным количеством зависимостей, длинную и глубокую поддержку старого кода (новые версии не должны ломать совместимость), минимум сторонних технологий с которыми нужно разбираться, полная поддержка проекта в 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…

16 февраля 2020 |

Есть что сказать по теме статьи? Пожалуйста - пишите!