Релиз 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 5.x, теперь вынесен в отдельный composer пакет laravel/ui . Если вам нужна традиционная Bootstrap/Vue, необходимо запустить следующую команду:
composer require laravel/ui
php artisan ui vue --auth
более подробно можно почитать в документации к релизу https://laravel.com/docs/6.0/releases
Что думаешь?