Почему вы не должны использовать Laravel Перевод

25 Июля 2022 10:26 (ред)

Я был разработчиком более 20 лет и использовал множество фреймворков PHP, включая Laravel, Cake, Zend 1 и 2, CodeIgniter, Yii и самодельный, который я написал некоторое время назад.

Опыт дает вам перспективу, которую вы не получите, просто используя один фреймворк снова и снова. Как программисты, мы — существа привычки. Мы используем то, что знаем, и если мы использовали какой-либо язык или фреймворк в течение последних 5 лет, что ж, это наш любимый инструмент. Это знакомо, как старый друг, которого мы хорошо знаем.

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

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

Я не говорю, что Laravel — плохой фреймворк для самых разных проектов, но для очень опытных разработчиков Laravel не лучший выбор.

Почему? Давайте рассмотрим несколько причин...

Laravel — это не PHP

Я читал статьи молодых программистов, превозносящих достоинства Laravel и то, как легко им пользоваться. В одной части я прочитал, что кто-то сказал, что им даже не нужно изучать PHP и SQL, потому что Laravel позаботится об этом за вас!

На самом деле я сочувствовал этому чувству, потому что в молодые годы у меня были точно такие же мысли. Мне нравилось работать с ORM, потому что (я думал) мне не придется изучать SQL. Это распространенное заблуждение.

Дело в том, что Laravel СЛИШКОМ много держит за руку. По крайней мере, для более опытных программистов.

Я тоже графический дизайнер. Laravel гордится тем, что является фреймворком для «ремесленников». Такое впечатление, что Laravel — это фреймворк для людей, которые толком не умеют программировать и не хотят учиться. Я понимаю.

Однако в какой-то момент всем нам, «ремесленникам», нужно будет вырасти, чтобы стать настоящими программистами. Laravel — это не PHP как таковой, он использует «выразительный» синтаксис или то, что было придумано как «синтаксический сахар», чтобы скрыть от вас то, о чем, по его мнению, всем нам, «ремесленникам», не нужно беспокоиться.

И это нормально. Пока нам не нужно беспокоиться про это.

В какой-то момент Laravel сорвется, и вам придется замарать руки настоящим кодом, реальным внедрением зависимостей, настоящими фабриками, настоящим SQL и т.д.

И весь этот «выразительный» синтаксис имеет скрытую цену, которую вы не видите в данный момент — Laravel — чрезвычайно самоуверенный фреймворк.

Что означает мнение?

Такие фреймворки, как Laravel, CakePHP и другие, имеют очень специфические способы выполнения действий. И до тех пор, пока ваш вариант использования не выходит за рамки того, что вообразили разработчики Laravel, все в порядке.

Но именно тогда, когда ваш «прецедент» становится «пограничным случаем» Laravel, когда все становится интересным, и внезапно вам говорят использовать какой-то очень странный код, который углубит вас в внутренности Laravel, чтобы показать, что на самом деле происходит под капот.

Внезапно вы обременены кодом, с которым не знакомы. Это работает? Вероятно. Вы знаете, что вы только что сделали и почему? Возможно нет.

И в этом заключается проблема.

Не используйте ORM.

Просто научите себя SQL. Честно говоря, научиться писать хорошие запросы не так уж и сложно. ORM делает вас ленивым, и в конце концов вам все равно придется писать SQL.

Я использовал ORM на предприятии, и я ненавидел это. Доктрина хуже всего. Конфигурация проста для простых проектов, но когда вы усложняете сложные отношения с помощью вложенных сущностей и рекурсии, гидратации, вам захочется рвать на себе волосы.

Мне приходилось писать целые классы, посвященные только настройке Doctrine DQL (язык запросов Doctrine) для того, что должно было быть простым объединением SQL и разбиением на страницы. Это не просто, когда вы используете ORM.

Кроме того, ORM стоят дорого. Один запрос Doctrine для вложенных сущностей может привести к буквально десяткам запросов к вашей базе данных под капотом. Даже для самых простых сущностей мы видели от 6 до 8 запросов к БД, хотя должно было быть не более 1-2.

Нам, PHP-программистам, нравится выводить объекты на экран, чтобы посмотреть, что в них находится. Вы можете забыть об этом с ORM. С рекурсией выгрузка объекта на экран займет всю доступную память PHP, и вместо этого вы просто получите сообщение об ошибке.

https://medium.com

Yori Yori + 997

5 Ответов

  1. Evg Evg 25 Июля 2022 10:34 (ред.)

    Есть такое дело, люди начинают пользоваться, как конструкторами: берут кубики готовые и складывают из этого, что надо. Bootstrap, хороший пример ещё. Знаю, есть люди которые используют Bootstrap и не знают css. Или, пишут плагины под WP, но не знают php и т.д.

    Конечно, всё зависит, что надо (я только смотрю с позиции обучение языку). Если учиться надо языку, то лучше с нуля. Инструменты разные, особенно хорошие, вроде Bootstrap, где многое продумано годами, могут здорово ограничить человека в обучение.

    Они конечно не виноваты, человек всё, но от осознавание этого ничего не меняется. Факт в том, что есть те, что года тратят и топчатся на месте пытаясь научиться:

    я выучу css через Bootstrap...

    Писал ранее, это один из самых сложных и долгих путей. Есть люди у кого получается, но не благодаря, а вопреки этому методу… Так и использование фреймворков полного стека.

  1. pupsik pupsik 30 Июля 2022 00:23

    Да, Ларавел как появился, всё как то в жопу пошло.

    Вот раньше, нужен тебе скрипт, форума, чата, или просто чето-то там. Пошел, нашел, скачал, залил, и запустил всё через инсталятор. И сиди себе ковыряйся в нём.

    А сейчас, половина опен соурса, как гавно. где install.php??? какие ешё composer.jason??? Какие ешё командные строки? Че за херня?

    Я вообше не понимаю как этот Ларавел работает. Я от дури иногда хочу проверить тот или иной «готовый» скрипт. Ну не могу я ничего на xampp поставить.

    Тебе надо это, это, это, и это. Кокого х*я готовый скрипт. Где он не вижу.

    Раньше как? Инсталлера нету? А нет проблем, в config.php прописываеш базу данных, url, делаеш дамп SQL. Готово!

  1. pupsik pupsik 30 Июля 2022 00:36

    Получилось как-то раз поставить Фларум на хампп, еле еле. (Это который типа «Будущее Есоталк» — ну ну.)

    Ну вот короче, скачал я с гитхуб архив, думаю, ух ты какой лёгенький, весит вообше мало. Залил, В компосере прописал инсталл и т.д. Короче установил.

    А когда сделал копию уже установленного Фларума, то офигел. Он в 10 раз больше чем есоталк. И это, без сраного инстолятора. Офигел и забил.

    Тем более ковырятса в нём нельзя, толку нет, чего-то поменяеш а при обновлении, давай меняй опять.

    Для кого тогда эти готовые опен соурце? Для тупых как я? Нет? Потому что Ларавел я вообще не понимаю. Для очень знатных? Не думаю, они своё сделают с нуля.

  1. Evg Evg 30 Июля 2022 06:51

    Библиотеки. Есть тенденция накидывать их в компосер. Сложно людям сделать разумный выбор, велико желание подключить что-то стороннее, а не своё. Так проще. В результате получается, что скрипт бывает раздут. По логике надо делать профилирование, смотреть скорость потом и т.д. но мало кто делает.

    Вчера буквально устанавливал один скрипт, вроде маленький, но компосер ставит более 200 библиотек. У них бывают зависимости, одни подтягивают другие.

    И вот более > 200 классов по профилированию смотрю уже в автозагрузки. Они по умолчанию включаются, а для php это накладные расходы, память, например.


    Пример тут, вслед за scssphp, которая вроде нужна и используется для сборки css подтягиваются 4 библиотеки Symfony. В общем, инспекцию и тут надо провести, чтобы контролировать «легкость».

  1. pupsik pupsik 31 Июля 2022 02:47

    Вот именно. Эти библиотеки на гитхуб где какой либо скрипт, не указываютса. Потом глядиш. Качал 15мб а после установки 115мб. Нафиг надо.