تغییرات جدید لاراول 11.31

تیم Laravel نسخه 11.31 را منتشر کرد که شامل dynamic cache/db/mail builders، یک Cache Token Repository، یک متد URL::forceHttps() و ویژگی‌های دیگر است.

Cache Token Repository

Andrew Brown یک Cache Token Repository را به‌عنوان روشی جایگزین برای ذخیره password reset tokens اضافه کرده است:

ویژگی CacheTokenRepository امکان مدیریت توکن‌های بازیابی رمز عبور را از طریق cache فراهم می‌کند. از دید Andrew Brown، cache به‌دلیل ماهیت موقتی بودن، یک محیط ذخیره‌سازی ایده‌آل برای توکن‌های بازیابی رمز عبور است.

برای فعال‌سازی CacheTokenRepository جدید، پیکربندی خود را در config/auth.php به‌صورت زیر تغییر دهید:

'passwords' => [
 
    //new cache driver
    'customers' => [
        'driver'   => 'cache',
        'store'    => 'passwords',
        'provider' => 'customers',
        'expire'   => 60,
        'throttle' => 60,
    ],
 
   //default old database driver
    'users'     => [
        'provider' => 'users',
        'table'    =>'password_reset_tokens',
        'expire'   => 60,
        'throttle' => 60,
    ],
],

Dynamic Mailers On-Demand

Steve Bauman قابلیت ساخت mailer دینامیک و ارسال آن را با متد Mail::build() اضافه کرده است. این ویژگی به توسعه‌دهندگان امکان می‌دهد mailerها را براساس پیکربندی خاصی بدون نیاز به تعریف در فایل‌های پیکربندی بسازند:

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);

افزودن متد DB::build()

Steve Bauman متد 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',
    // ...
]);

افزودن متد Cache::build() برای ساخت Cache Repositories در لحظه

Steve Bauman همچنین قابلیت ساخت Cache Repositories دینامیک را با متد Cache::build() اضافه کرده است. مشابه روش‌های DB و Mail، می‌توانید cache repositories را بدون تعریف در فایل پیکربندی ایجاد کنید:

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'),
]);

پشتیبانی از Enums در متد onQueue() برای Batch و Chain

Philip Iezzi قابلیت استفاده از backed enums را با متد onQueue() در Bus chain اضافه کرده است:

Bus::chain($jobs)
    ->onQueue(QueueName::long)->dispatch();

افزودن متد removeDeferredServices() برای حذف Deferred Services

Ollie Read متد removeDeferredServices() را به برنامه اضافه کرده که امکان حذف deferred services از container برنامه را فراهم می‌کند:

// Before
$deferredServices = $app->getDeferredServices();
 
unset($deferredServices['auth.password'], $deferredServices['auth.password.broker']);
 
$app->setDeferredServices($deferredServices);
 
// After
$app->removeDeferredServices(['auth.password', 'auth.password.broker']);

قابلیت اضافه کردن و اضافه کردن اولویت Middleware از سازنده برنامه

Ollie Read یک تغییر کوچک دیگر اضافه کرده که به شما اجازه می‌دهد اولویت middlewareها را بعد یا جلوی اولویت‌بندی قرار دهید:

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();

افزودن متد forceHttps() برای اجبار به استفاده از HTTPs در URLها

Dasun Tharanga متد forceHttps() را برای ساده‌سازی الزام به استفاده از HTTPs برای URLهایی که به آن نیاز دارند اضافه کرده است:

URL::forceHttps(
    $this->app->isProduction()
);
 
URL::forceHttps(
    $this->app->environment('staging', 'production')
);

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *