Pull to refresh

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

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


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

Разбираемся


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

Yii2


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

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

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

Laravell


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

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

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

Из перечисленных мною плюсов одного и другого фрейма, можно понять, что я намекаю на то, что, если вам нужен api или REST API интерфейс, лучше использовать Laravell. Да в Yii2 тоже есть методы для работы. Более того, даже есть yii\rest\ActiveController, в котором есть сразу все. Но, там пути задаются через названия методов 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. Поэтому для АПИ все равно остается лучшим выбором для меня. Еще мне очень интересно ваше мнение по поводу статьи и спора в приведенной ссылке.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.