[Из песочницы] Laravel 7

?v=1

Введение

3 марта команда Laravel официально выпустила Laravel 7.0. Как указано в политике поддержки Laravel, это одно из основных обновлений. Хоть этот релиз и не обозначен как LTS, в нём всё равно представлено много новых замечательных функций и исправлений. Обновление будет предоставлять исправление ошибок до 3 сентября 2020 года, а исправления безопасности в течение 1 года до 3 марта 2021 года.


Новые Функции в Laravel 7


X Blade

Laravel 7 доработали шаблонизатор Blade, добавив совершенно новые X функции. Этот пакет предоставляет простой способ рендеринга пользовательских компонентов HTML в ваших представлениях Blade.

Ранее вы должны были писать так:

@include('myAlert', ['type' => 'error', 'message' => $message])

Сейчас, используя x blade, это будет выглядеть так:


Настраиваемые Заглушки

Для того, чтобы настроить файлы-заглушки, вам нужно опубликовать их:


php artisan stub:publish

После запуска этой команды в ваш проект будет добавлен новый каталог.


Свободные Операции над Строками

Ранее множество полезных функций для работы со строками предоставлял класс llluminate\Support\str. Laravel 7 теперь предлагает более объектно-ориентированную, свободную библиотеку для работы со строками, построенную поверх этих функций.

Сейчас вы можете создать объект llluminate\Support\Striangable с помощью метода Str: of. Затем к объекту можно применить множество методов для манипулирования строкой:

return (string) Str::of('  Laravel Framework 6.x ')
                  ->trim()
                  ->replace('6.x', '7.x')
                  ->slug();


Zttp для HTTP-клиентов

Zttp — это простая обёртка вокруг Guzzle, задача которой обеспечить максимально приятный опыт разработки при наиболее распространённых сценариях использования. Zttp — новый пакет PHP, который представляет собой обёртку вокруг Guzzle, предназначенную для создания выразительного синтаксиса и упрощения общих случаев использования.


Laravel Airlock

Laravel Airlock — это новый пакет, который обеспечивает лёгкую систему аутентификации для одностраничных приложений (SPA), мобильных приложений и простых API на основе токенов. C помощью пакета Airlock пользователь вашего приложения может создать несколько токенов API для своей учётной записи. Эти токены могут предоставлять способности/области действия, определяющие, какие действия разрешено выполнять токенам.


Несколько Почтовых Драйверов

Laravel 7 позволяет настроить несколько почтовых драйверов для одного приложения. Каждый почтовый драйвер (mailer), настроенный в конфигурационном файле mail, может иметь свои собственные параметры и даже уникальный «транспорт», позволяющий вашему приложению использовать различные почтовые службы для отправки определённых электронных сообщений.


Кастомные Eloquent Касты (Custom Eloquent Casts)

Классы, которые реализуют этот интерфейс, должны определять методы get и set. Метод get отвечает за преобразование необработанного значения из базы данных в приведённое значение, тогда как метод set должен преобразовать приведённое значение в необработанное значение, которое можно сохранить в базе данных. В качестве примера, мы повторно реализуем встроенный каст json как пользовательский:

    


Поддержка Общего Доступа к Ресурсам (CORS)

Laravel может автоматически отвечать на запросы CORS OPTION с настроенными вами значениями. Все параметры CORS могут быть настроены в вашем конфигурационном файле CORS, а запросы OPTIONS будут автоматически обрабатываться связующим программным обеспечением HandleCors, которое по умолчанию включено в ваш глобальный стек связующего ПО.


Касты Времени в Запросах

Иногда нужно применить преобразование при выполнении запроса, например, при выборе необработанного значения из таблицы. Давайте рассмотрим следующий запрос:

    $users = User::select([
    'users.*',
    'last_posted_at' => Post::selectRaw('MAX(created_at)')
            ->whereColumn('user_id', 'users.id')
])->withCasts([
    'last_posted_at' => 'date'
])->get()


Итоги

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

Я думаю, что это отличный релиз, и с нетерпением жду следующие обновления. Надеюсь, что вы чувствуете то же самое!

© Habrahabr.ru