laravel 8 что нового

Что нового в Laravel 8

Потому, официальная дата выхода Laravel 8 запланирована на 8 сентября. Но, скорее всего, вы читаете эту статью уже некоторое время спустя.

Что нового в Laravel 8

Laravel 8 имеет несколько новых функций, таких как группировка заданий (Job Batching), изменение каталога моделей по умолчанию, Schema Dump, Laravel Jetstream и улучшение предыдущих функций, таких как кэширование маршрутов, режим обслуживания сайта (maintenance mode), Rate Limit и больше исправлений ошибок. Давайте посмотрим, что добавилось и улучшилось в Laravel 8.

Job Batching

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

Для поиска информации о подобной группе задании вы можете использовать Bus::findBatch($batchId)

Новая директория для моделей (сущностей)

Laravel Jetstream

It gives you beautiful scaffolding for laravel application. It is completely free and open-source. It has in-build features like user profile management, Two-factor Authentication, API tokens, Team management, Multi-Session Management and a lot of cool stuff. Jetstream design with Tailwind CSS and you can choose scaffolding with Livewire or Inertia.

Jetstream использует CSS фреймворк Tailwind CSS, и, помимо него, вы можете использовать каркас с Laravel Livewire или Inertia.

Laravel Factory

Laravel 8 предоставляет ещё более легкий способ массового создания данных с помощью усовершенствованной фабрики моделей. Давайте посмотрим, насколько крутыми фабрики стали.

Schema Dump

В результате чего, это позволяет нам удалить старые миграции, потому что они будут загружены в дамп. Так же, это приводит к приросту скорости во время тестирования, так как Laravel теперь не нужно выполнять последовательно все миграции последовательно.

Улучшение Rate Limiting

В прошлых статьях я писал о том, как пользовать Rate Limit-ом, и задавать лимиты по запросам на конкретный URL приложения. В laravel 8 теперь можно по-новому, легче и удобнее задавать лимиты. Вот пример:

Создание Лимита Запросов:

Создание Лимита Запросов на основе middleware:

Улучшение Режима Обслуживания (Maintenance Mode)

Вы можете настроить дополнительные параметры режима обслуживания.

Объяснение

Time Traveller

C Laravel time traveller хелпером вам будет проще управлять датой/временем. В базовом классе для тестов этот хелпер уже включён по-дефолту. Вот несколько примеров:

Динамические Blade компоненты

Теперь, с Laravel 8 вы можете рендерить blade-компоненты динамически. Благодаря этой функции, вы можете во время выполнения приложения выбрать, какой компонент будет отображен.

Изменение пагинации по умолчанию

Теперь пагинация в Laravel 8 будет использовать Tailwind CSS по умолчанию.

Улучшение кеширование маршрутов (роутинга)

С Laravel 8 вы можете кэшировать ваши маршруты, даже если вы используете анонимные функции в определении маршрута.

Улучшение php artisan serve

Резюме

В этой статье я перечислил список того, что было добавлено, или улучшено в новой версии Laravel. Благодаря этой статье вы узнали что нового в laravel 8.

Subscribe to Блог php программиста: статьи по PHP, JavaScript, MySql

Get the latest posts delivered right to your inbox

Fomenko Alexander

Read more posts by this author.

laravel

Определяем горизонтальный и вертикальный центр элемента в JavaScript

Мне часто приходится вычислять горизонтальный и вертикальный центры элемента в JavaScript. Одним из отличных практичных примеров является подобное всплывающее окно: Чтобы идеально спозиционировать всплывающее окно, мне нужно знать горизонтальный и вертикальный центры кнопки,

Fomenko Alexander

Как я работаю с массивами в JavaScript

В JavaScript есть много доступных методов при работе с массивами. Возможными способами создания или изменения массивов являются: unshift, shift, push, pop, splice, concat, slice, деструктуризация, rest-операторы, spread-операторы. Существуют также методы для интерации элементов

Fomenko Alexander

Источник

Что нового в Laravel 8.0

релиз 8 версии laravel

Laravel 8 будет включать в себя несколько приятных новых дополнений, включая улучшенный режим обслуживания, а также еще несколько более крупных функций, которые еще не были объявлены

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

Возможность тестирования views и компоненты Blade по отдельности ( #31378 и #32601 )

Laravel Jetstream

Laravel Jetstream улучшает существующий Laravel UI. Он обеспечивает отправную точку для новых проектов, включая вход в систему, регистрацию, проверку электронной почты, двухфакторную аутентификацию, управление сеансами, поддержку API через Laravel и управление командой.

Папка Models

Скелет приложения Laravel 8 включает папку app/Models. Все команды генератора предполагают, что модели существуют в app/Models; однако, если этот каталог не существует, структура будет считать, что приложение хранит модели в app/.

Классы фабрики моделей

Начиная с Laravel 8, теперь, фабрики моделей Eloquent основаны на классах, с улучшенной поддержкой отношений между фабриками (т.е. у пользователя много постов). Думаю, вы согласитесь, насколько хорош новый синтаксис для создания записей с помощью новых и улучшенных фабрик моделей:

Сжатие миграции

Если ваше приложение содержит много файлов миграции, теперь вы можете сжать их в один файл SQL. Этот файл будет выполняться первым при запуске миграции, а затем все оставшиеся файлы миграции, которые не являются частью файла сжатой схемы. Сжатие существующих миграций может уменьшить количество файлов миграции и, возможно, повысить производительность при выполнении тестов.

Улучшенное ограничение скорости

Laravel 8 вносит улучшения в существующие функции ограничения скорости, поддерживая обратную совместимость с существующим throttle middleware и предлагая гораздо большую гибкость. В Laravel 8 есть концепция ограничителей скорости, которые вы можете определить через фасад:

Как видите метод for() принимает экземпляр HTTP-запроса, что дает вам полный контроль над динамическим ограничением запросов.

Помощники по тестированию времени

Пользователи Laravel получили полный контроль над изменением времени с помощью превосходной библиотеки Carbon PHP. Laravel 8 делает еще один шаг вперед, предоставляя удобные помощники по тестированию для управления временем внутри тестов:

При использовании этих методов время будет сбрасываться между каждым тестом.

Компоненты Dynamic Blade

Иногда вам нужно динамически визуализировать blade-компонент во время выполнения. Laravel 8 предоставляет компонент для рендеринга :

Пакетирование заданий

Функция пакетной обработки заданий Laravel позволяет вам легко выполнять пакет заданий, а затем выполнять некоторые действия, когда пакет заданий завершился.

Читайте также:  какой оперный герой успевал по его собственному признанию находиться и тут и там

Новый метод фасада Bus batch() может использоваться для отправки пакета заданий. Конечно, пакетирование в первую очередь полезно в сочетании с обратными вызовами завершения. Таким образом, вы можете использовать методы then, catch и finally для определения завершения обратного вызова для партии. Каждый из этих обратных вызовов получит экземпляр при вызове: Illuminate\Bus\Batch

Улучшенный режим обслуживания

В предыдущих выпусках Laravel php artisan down функцию режима обслуживания можно было обойти с помощью «разрешенного списка» IP-адресов, которым был разрешен доступ к приложению. Эта функция была удалена в пользу более простого решения «secret»/token.

Находясь в режиме обслуживания, вы можете использовать опцию secret для указания токена обхода режима обслуживания:

После перевода приложения в режим обслуживания вы можете перейти к URL-адресу приложения, соответствующему этому токену, и Laravel выдаст вашему браузеру файл cookie обхода режима обслуживания:

Замыкание Dispatch/Chain

Используя новый метод catch, теперь вы можете предоставить замыкание, которое должно быть выполнено, если замыкание в очереди не может быть успешно завершено после исчерпания всех настроенных попыток повтора вашей очереди:

Улучшения прослушивателя событий

Кроме того, прослушиватели событий на основе замыкания теперь могут быть помечены как стоящие в очереди с помощью функции:Illuminate\Events\queueable

Если вы хотите обрабатывать сбои анонимного прослушивателя в очереди, вы можете предоставить закрытие метода catch при определении прослушивателя queueable:

Улучшение artisan serve

Обновления пространства имен маршрутизации

Вызов action связанных методов должен использовать тот же синтаксис вызова:

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

Источник

Laravel Framework Russian Community

Пролог

Начало работы

Архитектурные концепции

Основное

Погружение

Безопасность

База данных

Eloquent ORM

Тестирование

Пакеты

Примечания к релизу

Исключения

Именованные аргументы

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

Политика поддержки

Для релизов LTS, таких как Laravel 9, исправления ошибок предоставляются в течение 2 лет, а исправления безопасности – в течение 3 лет. Эти релизы предоставляют самый продолжительный период поддержки и обслуживания. Для основных релизов, исправления ошибок предоставляются в течение 18 месяцев, а исправления безопасности – в течение 2 лет. Для всех дополнительных библиотек, включая Lumen, только последний релиз получает исправления ошибок. Помимо этого, ознакомьтесь с версиями баз данных, которые поддерживает Laravel.

Версия Дата релиза Исправление ошибок до Исправления безопасности до
6 (LTS) September 3rd, 2019 September 7th, 2021 September 6rd, 2022
7 March 3rd, 2020 October 6th, 2020 March 3rd, 2021
8 September 8th, 2020 April 6th, 2021 September 8th, 2021
9 (LTS) January 25th, 2022 January 30th, 2024 January 28th, 2025
10 January 24th, 2023 July 30th, 2024 January 28th, 2025

Laravel 8

Laravel Jetstream

Laravel Jetstream был написан Taylor Otwell.

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

Jetstream разработан с использованием Tailwind CSS и предлагает на ваш выбор каркасы Livewire или Inertia.

Каталог моделей

Классы фабрики модели

Поскольку фабрики модели теперь являются простыми классами PHP, преобразования состояний могут быть записаны как методы класса. Кроме того, при необходимости вы можете добавить любые другие вспомогательные классы в фабрику модели Eloquent.

После определения метода преобразования состояния мы можем использовать его так:

Чтобы упростить процесс обновления, был выпущен пакет laravel/legacy-factories, обеспечивающий поддержку предыдущей итерации фабрик модели в Laravel 8.x.

Переписанные фабрики Laravel содержат гораздо больше функций, которые, как мы думаем, вам понравятся. Чтобы узнать больше о фабриках моделей, обратитесь к документации по тестированию баз данных.

Сжатие миграций

По мере создания приложения вы можете со временем накапливать все больше и больше миграций. Это может привести к тому, что каталог миграций станет раздутым из-за потенциально сотен миграций. Если вы используете MySQL или PostgreSQL, теперь вы можете «сжать» свои миграции в один файл SQL. Для начала выполните команду schema:dump :

Когда вы выполните эту команду, Laravel запишет файл «схемы» в каталог database/schema вашего приложения. Теперь, когда вы попытаетесь перенести свою базу данных, Laravel сначала выполнит SQL-операторы файла схемы, при условии, что никакие другие миграции не выполнялись. После выполнения команд файла схемы, Laravel выполнит все оставшиеся миграции, которые не были включены в дамп схемы БД.

Пакетная обработка заданий

Функционал пакетной обработки заданий Laravel позволяет вам легко выполнить пакет заданий, по завершению которого дополнительно совершить определенные действия.

Чтобы узнать больше о пакетной обработки заданий, обратитесь к документации по очередям.

Улучшенное ограничение частоты запросов

Функционал ограничения частоты запросов в Laravel был расширен за счет большей гибкости и возможностей, при этом сохранена обратная совместимость с API посредника throttle предыдущих релизов.

Поскольку замыкание получает экземпляр входящего HTTP-запроса, вы можете динамически создать ограничение на основе входящего запроса или статуса аутентификации пользователя:

Иногда может потребоваться сегментация ограничений по некоторым произвольным значениям. Например, вы можете разрешить пользователям получать доступ к указанному маршруту 100 раз в минуту на каждый IP-адрес. Для этого можно использовать метод by при построении лимита:

Чтобы узнать больше об ограничителях запросов, обратитесь к документации по маршрутизации.

Улучшенный режим обслуживания

В предыдущих релизах Laravel функционал режима обслуживания php artisan down можно было обойти с помощью «разрешенного списка» IP-адресов, имеющим доступ к приложению. Эта функция была удалена в пользу более простого токен-решения.

После перевода приложения в режим обслуживания вы можете перейти по URL-адресу приложения, соответствующему этому токену, и Laravel выдаст вашему браузеру файл cookie обхода режима обслуживания:

При доступе к этому скрытому маршруту вы будете перенаправлены на корневой маршрут приложения. Как только cookie будет отправлен вашему браузеру, вы сможете просматривать приложение в обычном режиме, как если бы оно не находилось в режиме обслуживания.

Предварительный рендеринг шаблона режима обслуживания

Если вы используете команду php artisan down во время развертывания, ваши пользователи могут иногда сталкиваться с ошибками, если они обращаются к приложению во время обновления ваших зависимостей Composer или других компонентов фреймворка. Это происходит потому, что значительная часть фреймворка Laravel должна загружаться, чтобы определить, находится ли ваше приложение в режиме обслуживания, и отобразить шаблон режима обслуживания с помощью механизма шаблонов.

По этой причине Laravel позволяет предварительно визуализировать шаблон режима обслуживания, который будет возвращен в самом начале цикла запроса. Этот шаблон отображается перед загрузкой любых зависимостей вашего приложения. Вы можете выполнить предварительный рендеринг шаблона по вашему выбору, используя параметр render команды down :

Выполнение замыканий с использованием цепочки catch

Динамические компоненты Blade

Иногда может потребоваться отрисовать компонент, но вы не знаете, какой именно компонент это будет до момента выполнения. В этой ситуации вы можете использовать встроенный в Laravel компонент dynamic-component для рендеринга компонента, зависящего от значения или переменной, сформированных во время выполнения приложения:

Чтобы узнать больше о компонентах Blade, обратитесь к документации Blade.

Улучшения слушателей событий

Кроме того, анонимные слушатели событий теперь могут быть помечены как доступные для очереди с помощью функции Illuminate\Events\queueable :

Помощники по временному тестированию

Автор: Taylor Otwell, вдохновленный Ruby on Rails.

Улучшения Artisan serve

Постраничная навигация с использованием Tailwind

Пагинатор Laravel был обновлен для использования фреймворка Tailwind CSS по умолчанию. Tailwind CSS – это настраиваемая низкоуровневая структура CSS, которая дает вам все строительные блоки, необходимые для создания нестандартных дизайнов без каких-либо раздражающих самоуверенных стилей, за которые вам придется бороться. Конечно, также остаются доступными шаблоны Bootstrap 3 и 4.

Обновления пространства имен маршрутизации

Источник

Release Notes

Versioning Scheme

Laravel and its other first-party packages follow Semantic Versioning. Major framework releases are released every year (

January), while minor and patch releases may be released as often as every week. Minor and patch releases should never contain breaking changes.

Exceptions

Named Arguments

At this time, PHP’s named arguments functionality are not covered by Laravel’s backwards compatibility guidelines. We may choose to rename function parameters when necessary in order to improve the Laravel codebase. Therefore, using named arguments when calling Laravel methods should be done cautiously and with the understanding that the parameter names may change in the future.

Support Policy

For LTS releases, such as Laravel 9, bug fixes are provided for 2 years and security fixes are provided for 3 years. These releases provide the longest window of support and maintenance. For general releases, bug fixes are provided for 18 months and security fixes are provided for 2 years. For all additional libraries, including Lumen, only the latest release receives bug fixes. In addition, please review the database versions supported by Laravel.

(*) Supported PHP versions

Laravel 8

Laravel Jetstream

Laravel Jetstream was written by Taylor Otwell.

Laravel Jetstream is a beautifully designed application scaffolding for Laravel. Jetstream provides the perfect starting point for your next project and includes login, registration, email verification, two-factor authentication, session management, API support via Laravel Sanctum, and optional team management. Laravel Jetstream replaces and improves upon the legacy authentication UI scaffolding available for previous versions of Laravel.

Jetstream is designed using Tailwind CSS and offers your choice of Livewire or Inertia scaffolding.

Models Directory

By overwhelming community demand, the default Laravel application skeleton now contains an app/Models directory. We hope you enjoy this new home for your Eloquent models! All relevant generator commands have been updated to assume models exist within the app/Models directory if it exists. If the directory does not exist, the framework will assume your models should be placed within the app directory.

Model Factory Classes

Model factory classes were contributed by Taylor Otwell.

Eloquent model factories have been entirely re-written as class based factories and improved to have first-class relationship support. For example, the UserFactory included with Laravel is written like so:

Thanks to the new HasFactory trait available on generated models, the model factory may be used like so:

Since model factories are now simple PHP classes, state transformations may be written as class methods. In addition, you may add any other helper classes to your Eloquent model factory as needed.

For example, your User model might have a suspended state that modifies one of its default attribute values. You may define your state transformations using the base factory’s state method. You may name your state method anything you like. After all, it’s just a typical PHP method:

After defining the state transformation method, we may use it like so:

As mentioned, Laravel 8’s model factories contain first class support for relationships. So, assuming our User model has a posts relationship method, we may simply run the following code to generate a user with three posts:

To ease the upgrade process, the laravel/legacy-factories package has been released to provide support for the previous iteration of model factories within Laravel 8.x.

Laravel’s re-written factories contain many more features that we think you will love. To learn more about model factories, please consult the database testing documentation.

Migration Squashing

Migration squashing was contributed by Taylor Otwell.

As you build your application, you may accumulate more and more migrations over time. This can lead to your migration directory becoming bloated with potentially hundreds of migrations. If you’re using MySQL or PostgreSQL, you may now «squash» your migrations into a single SQL file. To get started, execute the schema:dump command:

When you execute this command, Laravel will write a «schema» file to your database/schema directory. Now, when you attempt to migrate your database and no other migrations have been executed, Laravel will execute the schema file’s SQL first. After executing the schema file’s commands, Laravel will execute any remaining migrations that were not part of the schema dump.

Job Batching

Laravel’s job batching feature allows you to easily execute a batch of jobs and then perform some action when the batch of jobs has completed executing.

To learn more about job batching, please consult the queue documentation.

Improved Rate Limiting

Rate limiting improvements were contributed by Taylor Otwell.

Laravel’s request rate limiter feature has been augmented with more flexibility and power, while still maintaining backwards compatibility with previous release’s throttle middleware API.

Rate limiters are defined using the RateLimiter facade’s for method. The for method accepts a rate limiter name and a closure that returns the limit configuration that should apply to routes that are assigned this rate limiter:

Since rate limiter callbacks receive the incoming HTTP request instance, you may build the appropriate rate limit dynamically based on the incoming request or authenticated user:

Sometimes you may wish to segment rate limits by some arbitrary value. For example, you may wish to allow users to access a given route 100 times per minute per IP address. To accomplish this, you may use the by method when building your rate limit:

Rate limiters may be attached to routes or route groups using the throttle middleware. The throttle middleware accepts the name of the rate limiter you wish to assign to the route:

To learn more about rate limiting, please consult the routing documentation.

Improved Maintenance Mode

Maintenance mode improvements were contributed by Taylor Otwell with inspiration from Spatie.

In previous releases of Laravel, the php artisan down maintenance mode feature may be bypassed using an «allow list» of IP addresses that were allowed to access the application. This feature has been removed in favor of a simpler «secret» / token solution.

While in maintenance mode, you may use the secret option to specify a maintenance mode bypass token:

After placing the application in maintenance mode, you may navigate to the application URL matching this token and Laravel will issue a maintenance mode bypass cookie to your browser:

When accessing this hidden route, you will then be redirected to the / route of the application. Once the cookie has been issued to your browser, you will be able to browse the application normally as if it was not in maintenance mode.

Pre-Rendering The Maintenance Mode View

If you utilize the php artisan down command during deployment, your users may still occasionally encounter errors if they access the application while your Composer dependencies or other infrastructure components are updating. This occurs because a significant part of the Laravel framework must boot in order to determine your application is in maintenance mode and render the maintenance mode view using the templating engine.

For this reason, Laravel now allows you to pre-render a maintenance mode view that will be returned at the very beginning of the request cycle. This view is rendered before any of your application’s dependencies have loaded. You may pre-render a template of your choice using the down command’s render option:

Closure Dispatch / Chain catch

Catch improvements were contributed by Mohamed Said.

Using the new catch method, you may now provide a closure that should be executed if a queued closure fails to complete successfully after exhausting all of your queue’s configured retry attempts:

Dynamic Blade Components

Dynamic Blade components were contributed by Taylor Otwell.

Sometimes you may need to render a component but not know which component should be rendered until runtime. In this situation, you may now use Laravel’s built-in dynamic-component component to render the component based on a runtime value or variable:

To learn more about Blade components, please consult the Blade documentation.

Event Listener Improvements

Event listener improvements were contributed by Taylor Otwell.

Closure based event listeners may now be registered by only passing the closure to the Event::listen method. Laravel will inspect the closure to determine which type of event the listener handles:

In addition, closure based event listeners may now be marked as queueable using the Illuminate\Events\queueable function:

If you would like to handle anonymous queued listener failures, you may provide a closure to the catch method while defining the queueable listener:

Time Testing Helpers

Time testing helpers were contributed by Taylor Otwell with inspiration from Ruby on Rails.

Artisan serve Improvements

Artisan serve improvements were contributed by Taylor Otwell.

Tailwind Pagination Views

The Laravel paginator has been updated to use the Tailwind CSS framework by default. Tailwind CSS is a highly customizable, low-level CSS framework that gives you all of the building blocks you need to build bespoke designs without any annoying opinionated styles you have to fight to override. Of course, Bootstrap 3 and 4 views remain available as well.

Routing Namespace Updates

Calls to the action related methods should use the same callable syntax:

Источник

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