Команда Laravel представила версію v11.31, яка включає динамічні будівники кешу, бази даних та електронної пошти, репозиторій токенів кешу, метод URL::forceHttps()
для зручності та багато іншого
Ендрю Браун додав репозиторій токенів кешу, що є альтернативним способом зберігання токенів скидання паролів:
Цей запит пропонує новий CacheTokenRepository, який дозволяє обробляти токени скидання паролів через кеш. На мою думку, кеш ідеально підходить для цієї мети, оскільки він є більш епhemeral, як і токени скидання паролів
Щоб активувати цей новий CacheTokenRepository, відредагуйте config/auth.php таким чином:
'passwords' => [
// новий драйвер кешу
'customers' => [
'driver' => 'cache',
'store' => 'passwords',
'provider' => 'customers',
'expire' => 60,
'throttle' => 60,
],
// старий драйвер бази даних
'users' => [
'provider' => 'users',
'table' =>'password_reset_tokens',
'expire' => 60,
'throttle' => 60,
],
],
Деталі реалізації можна знайти в Запиті на злиття #53428.
Стів Бауман додав можливість динамічно створювати маркетолога та надсилати його за допомогою методу Mail::build()
. Це дозволяє розробникам створювати маркетологів на основі заданої конфігурації, замість того, щоб хардкодити їх у файлах конфігурації:
use Illuminate\Support\Facades\Mail;
$mailer = Mail::build([
'transport' => 'smtp',
'host' => '127.0.0.1',
'port' => 587,
'encryption' => 'tls',
'username' => 'usr',
'password' => 'pwd',
'timeout' => 5,
]);
$mailer->send($mailable);
Деталі обговорення та реалізації в Запиті на злиття #53411.
Подібно до методу Mail::build()
, Стів Бауман додав DB::build()
для динамічного створення нових з'єднань з базою даних, які не визначені у вашому конфігураційному файлі:
use Illuminate\Support\Facades\DB;
$sqlite = DB::build([
'driver' => 'sqlite',
'database' => ':memory:',
]);
$mysql = DB::build([
'driver' => 'mysql',
'database' => 'forge',
'username' => 'root',
'password' => 'secret',
]);
$pgsql = DB::build([
'driver' => 'pgsql',
// ...
]);
$sqlsrv = DB::build([
'driver' => 'sqlsrv',
// ...
]);
Детальніше в Запиті на злиття #53464.
Стів Бауман додав можливість динамічно створювати кеш-репозиторії за допомогою методу Cache::build()
. Подібно до методів динамічного створення DB та Mailer, ви можете створити кеш-репозиторії, не визначені у вашому конфігураційному файлі:
use Illuminate\Support\Facades\Cache;
$apc = Cache::build([
'driver' => 'apc',
]);
$array = Cache::build([
'driver' => 'array',
'serialize' => false,
]);
$database = Cache::build([
'driver' => 'database',
'table' => 'cache',
'connection' => null,
'lock_connection' => null,
]);
$file = Cache::build([
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
]);
Деталі реалізації доступні в Запиті на злиття #53454.
Філіп Іеззі додав можливість використовувати підтверджені перерахування за допомогою методу onQueue()
в ланцюзі Bus:
// До
Bus::chain($jobs)
->onQueue(QueueName::long->value)->dispatch();
// Після
Bus::chain($jobs)
->onQueue(QueueName::long)->dispatch();
Деталі впровадження — в Запиті на злиття #53359.
Оллі Рід додав метод removeDeferredServices()
, який дозволяє видаляти відкладені сервіси з контейнера програми.
// До
$deferredServices = $app->getDeferredServices();
unset($deferredServices['auth.password'], $deferredServices['auth.password.broker']);
$app->setDeferredServices($deferredServices);
// Після
$app->removeDeferredServices(['auth.password', 'auth.password.broker']);
Цей випадок використання не є поширеним, але цей метод гармонійно поєднується з методами отримання та налаштування відкладених сервісів. Подробиці в Запиті на злиття #53362.
Оллі Рід запровадив можливість додавання та видалення пріоритетів посередників у конфігурації програми, що дозволяє додавати посередники до/після методів ядра:
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->appendToPriorityList(
[
\Illuminate\Cookie\Middleware\EncryptCookies::class,
\Illuminate\Contracts\Auth\Middleware\AuthenticatesRequests::class,
],
\Illuminate\Routing\Middleware\ValidateSignature::class
);
$middleware->prependToPriorityList(
[
\Illuminate\Cookie\Middleware\EncryptCookies::class,
\Illuminate\Contracts\Auth\Middleware\AuthenticatesRequests::class,
],
\Illuminate\Routing\Middleware\ValidateSignature::class
);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Детальніше в Запиті на злиття #53326.
Дасун Таранг реалізував метод forceHttps()
, що спрощує жорстке застосування HTTPs для URL-адрес. Цей метод приймає логічне значення, що дозволяє легко вимагати HTTPs для певного набору середовищ:
URL::forceHttps(
$this->app->isProduction()
);
URL::forceHttps(
$this->app->environment('staging', 'production')
);
Деталі реалізації в Запиті на злиття #53381.
Повний список нових функцій і оновлень доступний нижче. Також можна переглянути різницю між версіями 11.30.0 та 11.31.0 на GitHub. Ці нотатки про випуск безпосередньо з чейнджлогу:
useCascadeTruncate
для PostgresGrammar
від @korkoshko в https://github.com/laravel/framework/pull/53343URL::forceHttps()
для примусового використання HTTPS для URL від @dasundev в https://github.com/laravel/framework/pull/53381whereFullText
– узгодженість регістру від @parth391 в https://github.com/laravel/framework/pull/53395HasFactory
трейти до команди генерації make:model
за допомогою параметра --all
від @adel007gh в https://github.com/laravel/framework/pull/53391Mail::build
від @stevebauman в https://github.com/laravel/framework/pull/53411AddLinkHeadersForPreloadedAssets
middleware від @jnoordsij в https://github.com/laravel/framework/pull/53463DB::build
від @stevebauman в https://github.com/laravel/framework/pull/53464Cache::build
від @stevebauman в https://github.com/laravel/framework/pull/53454