Сравнение Yii2 и Laravell 5.5

в 19:06, , рубрики: php

Множество споров

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

Разбираемся

Бытует мнение, что фреймворки, так или иначе облегчают жизнь рядового программиста. Имхо, иногда наоборот усложняют, особенно когда преходится дебажить какой-то чужой модуль. Но не об этом сейчас речь. Мы попробуем разобраться какой конкретно фреймворк лучше для конкретных целей. По заголовку статьи, вы наверняка поняли, что сравнивать мы будем Yii2 и Laravell. Думаю плюсы и минусы, вы уже почитали в других местах и в других статьях на этом же ресурсе. Я попробую более кратно, для памяти и наглядности:

Yii2

  • Генератор CRUD для редактирования информации.
  • Генератор моделей из таблицы БД
  • Генерация контроллеров и расширений

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

Теперь посмотрим то, что есть в Laravell но нет в Yii2

Laravell

  • Связка многое ко многим в классе работы с моделями.
  • Работа с oauth с коробки, причем с методами для создания и редактирования пользователей через API запросы.
  • Дампер, с цикличной выдачей вложенных элементов

Ну это конечно не все, но это то, на что я хочу обратить внимание. Дампер и работа с API очень хорошо отнаследована от Symfony. Его мы сравнивать не будем, так как это фреймворк более глубокого программирования, где почти все, что нам может быть нужно, придется писать самим. И это далеко не минус, поскольку в условиях строгой типизации разработки, а также создания своих методологий, фреймворков или CMS систем это именно то, что нам будет необходимо. Но сейчас не о Symfony.

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

Из перечисленных мною плюсов одного и другого фрейма, можно понять, что я намекаю на то, что, если вам нужен api или REST API интерфейс, лучше использовать Laravell. Да в Yii2 тоже есть методы для работы. Более того, даже есть yiirestActiveController, в котором есть сразу все. Но, там пути задаются через названия методов actionМой_метод, что не очень динамично, и не всегда есть возможность создать такие пути как нам хочется. Да, мы их можем назначить через настройки правил rules в main.php конфиге, но на мой взгляд — это костыли. В Ларавелле, мы используем файл, где четко задаем путь обращения и контроллер с методом, который будет их обрабатывать. Это намного динамичнее и никаких костылей. Кроме того, для простых отдач, мы можем даже не использовать контроллер, а только сделать безымянную функцию и передать ее вторым параметром. На мой взгляд, очевидное преимущество формирование маршрутов лучше у Laravell.

Что касается реляционных связок, тут не вижу особых преимуществ того или иного фреймворка. Связка много ко многим используется редко и ее можно использовать только в пределах запроса одного объекта. Если мы хотим вывести 25, 100 или более объектов, такие связки плохо скажутся на скорости работы, так как будут выполняться дополнительные запросы к БД. Этим же грешат и другие связки, и все связки в Yii2. Для множественных данных, лучше использовать конструктор запросов, в обоих фреймворках.

В Laravell встроен js фреймворк Vue, который в последнее время выбивает себе лидирующие позиции среди других схожих JS-фреймов. Это несомненный плюс, по сравнению с Yii2, который в себе несет встроенный jQuery. Но необходимо помнить, что если нам нужно быстро сделать сайт и приделать к нему админку, встроенный Gii генератор Yii2 с помощью этого же jQuery сделает нам удобные гриды, сразу с возможностями правки, создания и удаления любого контента связанного с БД. Это ускоряет работу в разы.

Заключение

Надеюсь не сильно запутал желающих познать мой дзен мою точку зрения. Если мне нужен сайт, даже высоконагруженный, без особой нужды в API обмене данных, строгой типизации, но сделать нужно красиво и быстро, я выберу Yii2. Если же мы пишем сервис, который будет работать в рамках API запросов с различных клиентов: настольных приложений, мобильных устройств, и вся структура будет управляться с АПИ, то лучше выбрать Laravell. Ларавелл в таком случае позволить выдавать Json с какими угодно связями по одному или нескольким объектам, позволит быстро настроить oauth авторизацию и беспрепятственно пользоваться благами баз данных.

Еще совсем недавно натолкнулся на вот такой спор по поводу производительности того и другого фреймворка. Кое что проверил сам и действительно, формирование контента у Ларавелла немного дольше, но это только при использовании web роутов и шаблонизатора blade. Поэтому для АПИ все равно остается лучшим выбором для меня. Еще мне очень интересно ваше мнение по поводу статьи и спора в приведенной ссылке.

Автор: ювелир

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js