Релиз Laravel 6.0

Релиз Laravel 6.0

Что нового в шестом Ларавель?

Laravel 6.0 станет версией LTS (Long Term Support) — с поддержкой в течении длительного времени, вплоть до сентября 2022 года

Как и было объявлено на Laracon в июле, версия Laravel 6.0 вышла в августе, и привнесла небольшие изменения по сравнению с предыдущим 5.* релизом.

Как и версия 5.5, шестая "Лара" будет LTS - что означает поддержку в ближайшие 2 года, а один год с исправлениями, связанных с безопасностью фреймворка. Не LTS версии поддерживались течении полугода. Можно сравнить по таблице:


Версия
Релиз
Исправление ошибок
Исправления безопасности
5,5 (LTS)
30 августа 2017г.
30 августа 2019г.
30 августа 2020г.
5,6
7 февраля 2018г
7 августа 2018г.
7 февраля 2019г.
5,7
4 сентября 2018г.
4 марта 2019г.
4 сентября 2019г.
5,8
26 февраля 2019г.
26 августа 2019г.
26 февраля 2020г.
6,0 (LTS)
3 сентября 2019г.
3 сентября 2021г.
3 сентября 2022г.

Laravel 6.0

Laravel 6.0 (LTS) продолжает улучшения, сделанные в Laravel 5.8, представляя семантическое управление версиями, совместимость с Laravel Vapor , улучшенные ответы авторизации, middlewares задач, ленивые коллекции, улучшения подзапросов, извлечение фронтенда в отдельный в пакет laravel/ui и много других различных исправлений ошибок и улучшений.

Полный список изменений выглядит следующим:


  • Семантическое управление версиями
  • Совместимость с Laravel Vapor
  • Улучшенные ответы авторизации
  • Работа middleware в задачах
  • Ленивые Коллекции
  • Подзапросы в Eloquent
  • Laravel UI

Семантическая версионность

Пакет Laravel framework (laravel/framework) теперь соответствует стандарту семантического управления версиями. Это делает платформу совместимой с другими пакетами Laravel, которые уже следовали этому стандарту версий. Цикл выпуска Laravel останется неизменным.

Улучшенные ответы авторизации

Раньше было сложно предоставлять пользовательские сообщения об ошибках при авторизации конечным пользователям. В Laravel 6 представлен метод Gate::inspect, который обеспечивает ответ политики авторизации:

$response = Gate::inspect('view', $flight);

if ($response->allowed()) {
// User is authorized to view the flight...
}

if ($response->denied()) {
echo $response->message();
}


Job Middleware

Job Middleware - это функцирнальность, предоставленная Тейлором Отвеллом, которая позволяет выполнять задания через промежуточное ПО:

// Add a middleware method to a job class
public function middleware()
{
return [new SomeMiddleware];
}

// Specify middleware when dispatching a job
SomeJob::dispatch()->through([new SomeMiddleware]);

Middleware поможет вам избежать пользовательской логики в теле метода handle() вашей Job.

Ленивые Коллекции

Ленивые коллекции вносят новые правила работы с обширными коллекциями данных, включая коллекции моделей Eloquent. Новый класс Illuminate\Support\LazyCollection использует генераторы PHP для поддержания низкого потребления памяти при работе с большими наборами данных.

Расширение Eloquent подзапросами

Один из отличных способов перенести большой объем данных в базу данных - использование подзапросов. Подзапросы позволяют запускать вложенные запросы в другом запросе к базе данных. Это может быть мощным способом извлечения данных вспомогательной модели без каких-либо дополнительных запросов к базе данных, когда это невозможно сделать через отношения. Вы также можете использовать подзапросы в операторах order by, where и других:

//“Select” subqueries
return Destination::addSelect(['last_flight' => Flight::select('name')
->whereColumn('destination_id', 'destinations.id')
->orderBy('arrived_at', 'desc')
->limit(1)
])->get();

//“Order by” subqueries
return Destination::orderByDesc(
Flight::select('arrived_at')
->whereColumn('destination_id', 'destinations.id')
->orderBy('arrived_at', 'desc')
->limit(1)
)->get();

//“From” subqueries
return DB::table(function ($query) {
$query->selectRaw('sum(amount) as total')
->from('donations')
->groupBy('user_id');
}, 'do


Laravel UI

Фронтенд поставляемый с выпусками Laravel 5.x, теперь вынесен в отдельный composer пакет  laravel/ui . Если вам нужна традиционная Bootstrap/Vue, необходимо запустить следующую команду:

composer require laravel/ui
php artisan ui vue --auth

 более подробно можно почитать в документации к релизу https://laravel.com/docs/6.0/releases

Сергей Мухин

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

Есть вопросы?

Я почти всегда в режиме онлайн

Связаться со мной