Laravel 5.5 LTS обзор нового релиза

Совсем недавно вышел новый релиз Laravel под номером 5.5, новая версия LTS (long term support). Она включает исправления по багам за 2 года, исправления безопасности за 3 года и новые фичи, речь о которых и пойдет в данной статье.

Whoops пакет

Whoops пакет вернулся в Laravel 5.5, теперь стек трейс выглядит так же привлекательно как и в 4-той версии.

Дампинг коллекций

Теперь дебажить коллекции стало намного проще с фунциями dump и dd.

Например, dump, выводит результат:

Результат:

В то же время dd (dd — dump and die) выводит тот же результат и останавливает цепочку:

Результат тот жe:

Отображение исключений

В новом релизе, вы можете прорисовывать исключения путем определения нового метода render в классе исключения:

Теперь, просто, сделав throw new TerribleSongException(), Laravel сам отправит респонс. Также, можно, просто имплементировать Responsable интерфейс (контракт) для класса исключения. А что из себя представляет Responsable интерфейс, речь пойдет ниже.

Responsable интерфейс

Теперь перед созданием респонс объекта проверяется на Responsable интерфейс. Класс который имплементирует интерфейс может быть возвращен с контроллера:

Сам класс может выглядеть так:

Валидация запроса

В более поздних версиях Laravel для валидации запроса использовался метод validate с контроллера:

Сейчас же появился более удобный вызов с самого объекта запроса:

На выходе получаем массив ($data) — аналог вызову Request::only():

Кастомные валидационные объекты и замыкания

Начиная с версии 5.5 кроме возможности создания кастомных методов валидации Validator::extend появилась возможность писать валидаторы имплементируя Rule интерфейc.

Для генерации валидатора, вызываем artisan:

Получаем класс в котором нужно описать два метода, passes и message:

Использовать класс можно следующим образом:

Новые директивы @auth и @guest

Раньше мы писали о директиве Blade::if версии 5.5. В новой версии 5.5 появились две новые директивы: @auth и @guest которые вы можете использовать в файлах шаблонов.

В предыдущих версиях вы могли использовать такие варианты проверки аутентификации пользователя:

Сейчас вы можете использовать эти директивы в более упрощенном виде:

Пресеты для фронтенда

Пресеты — это предустановки для фроненд-фреймворков которые можно сгенерировать при помощи новой команды в artisan. Когда вы начинаете новый проект на Laravel 5.5, у вас уже по-умолчанию установлен фреймворк Vue2.js.

В новой версии Laravel 5.5 вы можете выбрать 4 предустановленных варианта для генерации фронтенда: “none”, “bootstrap”, “vue”, “react”:

Набираем в командной строке с установленным проектом:

php artisan help preset
Использование:
 preset <type>

Аргументы type типы пресетов (none, bootstrap, vue, react)

Factory файлы

Теперь для каждой модели можно делать отдельную фабрику с помощью команды:

Или при генерировании модели добавить новый ключ:

Если же использовать ключ all, то получим модель, миграцию и фабрику:

Миграция с migrate:fresh

При работе с миграциями в Laravel есть migrate:refresh команда, которая откатывает миграцию назад. В новой версии 5.5 была добавлена команда migrate:fresh которая попросту удаляет все таблицы базы данных и запускает миграцию.

RefreshDatabase Trait

Появился новый трейт для миграции базы данных для тестирования. Этот новый trait использует наиболее оптимальный подход к переносу тестовой базы данных в зависимости от того, используете ли вы in-memory базу данных или традиционную базу данных. Можно обойтись и старыми DatabaseTransactions и DatabaseMigrations не используя RefreshDatabase.

Новый withoutExceptionHandling() метод

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

Автоопределение пакетов в Laravel

Для подключения и активации пакета, теперь достаточно просто запустить композер:

composer require barryvdh/laravel-debugbar:dev-master

Больше ничего делать ненужно!

Также можно включить пакет только в дев среду, исполнив:

Вместо выводов

Как видно, Laravel продолжает радовать своих фанов вкусными ништячками. Еще больше нововведений ждем в версии 5.6.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *