Про Laravel

Сегодня особенно обострилась борьба yii2 vs Laravel. И я бы хотел отметить минусы этих фреймворков. Чистая субъективщина. Но сегодня я напишу про Laravel.

Почему минусы? Мне нравится говорить о минусах, тут ничего не поделать :) Приступлю, пожалуй, от наименьшего до глобального.


snake_case vs camelCase

Eloquent по умолчанию настроен на snake_case style именование полей в БД. Да, когда я пишу на пхп, я люблю camelCase, я хочу чтобы у меня все проперти и все поля были camelCase, а не вальер со змеями и верблюдами. Если я буду юзать camelCase, то синтаксический сахар будет отказываться работать, кто знает, что в черной коробочке еще крякнет.

Синтаксический сахар мешает

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

Про какой сахар я говорю? Например, Eloquent:

Это путает, реально, путает :)

Далее, в самое Eloquent есть first(), firstOrNew(), firstOrFail(), firstOrCoffeeMaker(), firstOfXYZ(). Как по мне, это слишком большое пространство для маневра.

Сделайте это опционально, никому не нужна простыня непонятных методов, которые приходится читать в коде, а не в мануале или гугле. Ха-ха, кто ж читает код в гугли или мануале, возникает вопрос? А я скажу — все :) Программист — существо ленивое, он либо методом тыка что-то ищет, либо гуглит решение. Такая вот логика.

Тот же момент про контроллеры, в роуте можно как контроллер указать для обработки, так и анонимную функцию. Я видел проект, где не было ни одного контроллера, но зато около 3 тысяч строк кода в routes.php.

Не видел, ни одного дельного сборника best practices

Собственно говоря, предыдущий пункт плавно вылился сюда :) Лучшие практики необходимы, чтобы было что брать за идеал. Научи людей правильно юзать анонимные функции в роутах и будет намного лучше.

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

Вся боль в том, что никто не рассказывает как правильно сделать админку X для проекта Y. Я не говорю про воркбенч в ларавеле, не про компонентность. Тупо админка, с авторизацией, своим лейаутом, цсс, фронтендом, контроллером, может парой моделей. Например, для бложека. Как делать правильно? А хз.

Есть https://github.com/LaravelRUS/SleepingOwlAdmin он крутой, но проблема в том, что добрая часть ларавел программистов гуглят, пишут в форум ларакаст о том, как пофиксить ошибку автозагрузчика.

Я к тому, что никто не знает, как сделать правильно. В мире Yii, Саша Макаров молодца и все разжевал в cookbook, в мире Symfony порог вхождения такой, что хорошие кодеры свой Laravel могут написать :) Там вопросов таких не возникнет.

Но да ладно, админка это фигня. Есть IoC, есть ServiceProvider, есть что-то еще, но никто не говорит как этим пользоваться. Впечатление, будто ларавел программист пришел из джавы. Серьезно, в том же django, flask ни первое ни второе не оглашается на первой или второй странице мануала, тупо, потому что это не нужно.

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

Facades — прикольное решение в плане IoC, но с ним ломается IDE, появляется необходимость юзать костыль типа https://github.com/barryvdh/laravel-ide-helper, потому что иначе все равно, что ходить босиком по снегу в -35 градусов Цельсия.

Можно придумать. что еще наругать, но лень.

Экосистема

Мне не нравится, что опенсорс ларавела прорастает в коммерческие продукты автора фреймворка. Я про Envoyer и Forge, нет, я не хочу заниматься попытками запустить чей-то проект в этой экосистеме, потому что… Не знаю, не нравится мне, что дядя Тейлор получает деньги за это. Просто не нравится.

Хомячки

Именно так я хотел бы назвать около трети тех, кто любит ларавел. Они хотят использовать его везде, абсолютно. Некоторые его называют чуть ли не новой зарей пхп. А если говоришь слово yii или любой другой фреймворк, готовы найти где ты живешь и написать неприличное слово на двери. Увы, но для многих это прям нездоровый культ поклонения фреймворку. Нужно быть трезвее, ребята.

Тейлор

Самый главный минус. Дядя Тейлор. Почему он, спросите вы? Очень просто, сколько людей принимает решение, что покажет эппл на презентации? Сколько людей придумывает какой номер виндовс будет следующим? Как много людей принимает решение, будет ли коробка у автоваза следующего поколения или можно воткнуть педали от велосипеда и никто не заметит разницы? На любой из этих вопросов можно использовать ответ «больше 1 человека».

Чем это плохо? Будущее фреймворка определяет один человек, он закрыл раздел issues, он требует описывать баги пулл реквестом с тестом, чтобы найти багу или что-то такое, он толкает всем свое виденье. Гайз, это не опенсорс. Сколько бы проблем я не гуглил в плане ларавела, я находил решения на ларакастс.

Вот это я понимаю подсадить людей на иглу, а потом через пару лет всех кинуть и сказать, что ларавел теперь депрекейтед, новый ларавел с дамами и преферансом, и за $1 в месяц на лицензию.

Зависимость на 1 человека, отсутствие влияния сообщества — хрень. Твиттер голосование не в счет. Все кто раньше контрибутил в ларавел перестали. [тут должна быть картинка Киселева]

Вместо заключения

Не будьте хомячками.