Команда 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Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше