Anophel-آنوفل جدیدترین ویژگی های لاراول 10

جدیدترین ویژگی های لاراول 10

تاریخ انتشار:
Laravel
زمان مطالعه: 5 دقیقه

بعد از حدود یک سال لاراول 10 آمد، و اکنون در دسترس می باشد که با تغییرات گسترده ای همراه بود، که یکی از مهم ترین آن مینیمم ورژن PHP v8.1 می باشد. این تغییرات را بخواهم برایتان بگویم شامل بسته جدید Laravel Pennant و قوانین (role) های اعبتارسنجی قابل فراخوانی و … که میخواهیم تک تک آن ها را بررسی کنیم. پس با ما همراه باشید.

 

برنامه زمانبندی انتشار لاراول

تا قبل از لاراول 9 نسخه های اصلی این فریمورک هر 6 ماه یک بار منتشر می شد.ولی تیم اصلی لاراول با شروع لاراول 9 به یک برنامه سالانه رفتند و لاراول 9 در فوریه 2022 انتشار یافت.

طبق صحبت های این تیم :

لاراول از انواع بسته بندی ها(پکیج ها)ی جامعه محور و در کنار این پکیج ها از 9 جزء فریمورک مشهور سیمفونی (Symfony) برای تعدادی از ویژگی های خود در فریمورک لاراول مورد استفاده قرار می گیرد. به همین علت Symfony 6.0 قرار است در نوامبر ماه منتشر شود، و به همین دلیل تصمیم داریم لاراول 9 را تا 2022 به تعویق بی اندازیم.

 

با تاخیر در انتشارمی توانیم اجزا اصلی Symfony خود را به Symfony 6.0 ارتقا دهیم، بدون اینکه مجبور شویم تا سپتامبر 2022 برای انجام این ارتقا صبر کنیم.و علاوه بر این ، این ما را برای نسخه های بعدی بهتر می کند. زیرا انشتار سالانه ما دو ماه پس ار انتشارSymfony می باشد.

 

: طبق این صحبت ها برنامه زمانبندی انتشار لاراول به صورت زیر می باشد

  • Laravel 9: February 8th, 2022
  • Laravel 10: February 14th, 2023
  • Laravel 11: Q1 2024

پس بر این اساس لاراول 9 تا هشتم آگوست سال 2023 به رفع اشکال پرداخته خواهد شد و تا 14م فوریه 2024 به اصلاحات امینتی ادامه خواهد داد.

و برای لاراول 10 می توان انتظار داشت که تا 6 آگوست 2024 و رفع مشکلا امنیتی آن تا 14م فوریه 2025 خواهد بود.

 

 

 : خب بریم سراغ آپدیت بزرگ لاراول و به ویژگی های بزرگی که به آن اضافه شده است یک نگاهی بی اندازیم

 

1.لاراول 10 دیگر از PHP8.0 پشتیبانی نمی کند:

بله لاراول 10 دیگر از PHP≤8.0 پشتیبانی نمی کند. و حداقل php 8.1 را پشتیبانی می کند.

 

2.لاراول Pennant

یک پکجی است که توسط لاراول ایجاد شده که برای شما ویژگی Feature Flags را ارائه می دهد.این پکیج شامل یک درایور آرایه درون حافظه و یک درایور پایگاه داده برای ذخیره سازی دائمی ویژگی ها می باشد.

Feature Flags به شما این توانایی را می دهد که به تدریج ویژگی های جدید برنامه را با اطمینان اجرا کنید، طراحی های رابط کاربری A/B را آزمایش کنید و استراتژی مبتنی بر trunk-based رامورد استفاده قرار دهید و …

 ما یک ویژگی جدید ایجاد می کنیم:AppServiceProviderبرای مثال ما در 

 

public function boot(): void
{
    Feature::define('beta-testers', fn (User $user) => match (true) {
        $user->isBetaTester() => true,
        default => false,
    });
}

البته این یک راه بسیار تمیز و بهتری برای تعریف ویژگی های جدید برای برنامه شما می باشد، همچنین می توانید به صورت کلاس محور نیز این ویژگی را پیاده سازی کنید برای مثال:

class BetaTesters
{
    public function resolve(User $user): mixed
    {
        return match (true) {
            $user->isBetaTester() => true,
            default => false,
        };
    }
}

طبق مستندات(داکیومنتیشن) لاراول راه های بسیار زیادی برای پیاده سازی آن وجود دارد برای مثال به تکه کد زیر یک نگاهی بی اندازید:

class PodcastController
{
    public function index(Request $request): Response
    {
        return Feature::when(NewApi::class,
            fn () => $this->resolveNewApiResponse($request),
            fn () => $this->resolveLegacyApiResponse($request),
        );
    }
}

 

3. Process layer for Laravel

لاراول 10 یک لایه انتزاعی زیبا برای شروع و تعامل با فرایند های خارجی از طریق فساد (Facade) جدید Process فراهم می کند.همانند HTTP که کار با API را مهم می کند. برای مثال :

use Illuminate\Support\Facades\Process;
 
$result = Process::run('ls -la');
 
$result->successful();
$result->failed();
$result->exitCode();
$result->output();
$result->errorOutput();
$result->throw();
$result->throwIf($condition);

: ویژگی های که این فساد به ارمغان می آورد شامل

  1. 1.    روش های فرآیند روان برای ساختن نمونه فرآیند قبل از اجرای آن
    2.    مدیریت خروجی فرآیند همانطور که دریافت می شود
    3.    فرآیندهای ناهمزمان
    4.    استخرهای فرآیند
    5.    ویژگی های آزمایشی غنی از طریق ()fake
    6.    جلوگیری از فرآیندهای سرگردان در طول آزمایش

 

یک نمونه دیگر :

Process::fake([
    'ls *' => Process::result('Hello World'),
]);
 
$result = Process::run('ls -la');
 
Process::assertRan(function ($process, $result) {
    return $process->command == 'ls -la';
});
 
Process::assertRanTimes(function ($process, $result) {
    return $process->command == 'ls -la';
}, times: 1);
 
Process::assertNotRan(function ($process, $result) {
    return $process->command == 'cat foo';
});

 

4.اعلان های نوع بومی در اسکلت لاراول 10

در لاراول 10هرکدی که توسط فریمورک ایجاد می شود دارای نکات تایپ و انوع بازگشتی خواهد بود. که این ویژگی در PHP نیز وجود دارد که برای مثال در سطح فریمورک  :

1.انواع برگشتی
2.آرگومان های روش
3.حاشیه نویسی های اضافی در صورت امکان حذف می شوند
4.اجازه دادن به انواع زمین کاربر در آرگومان های بسته
5.ویژگی های تایپ شده را شامل نمی شود

 

5.قوانین اعبتارسنجی قابل فراخوانی به صورت پیش فرض

شما هنگامی که یک قانون اعبتارسنجی جدید از طریق Artisan ایجاد می کنید چیزی که خواهید دید این خواهد بود:

# Laravel 9 creates a rule class that implements the
# Illuminate\Contracts\Validation\Rule interface
artisan make:rule Uppercase
 
# Laravel 9 flag to create an invokable and implicit rule
artisan make:rule Uppercase --invokable
artisan make:rule Uppercase --invokable --implicit
 
# Laravel 10 creates an invokable rule by default
artisan make:rule Uppercase
 
# Laravel 10 implicit rule
artisan make:rule Uppercase --implicit

 

 

6.New String Password Helper

 می توانید که یک رمز عبور تصادفی و امن با طول مشخص ایجاد کنید. برای مثال:Str::passwordبا استفاده از متد 

 

use Illuminate\Support\Str;
 
$password = Str::password();
 
// 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4'
 
$password = Str::password(12);
 
// 'qwuar>#V|i]N'

 

 

7.حذف شدن برخی از ویژگی ها که در لاراول 9 وجود داشت

در لاراول 10 یک سری متد که منسوخ شده بود در لاراول 9 حذف شده اند.برخی از متد هایی که حذف شدن:

 

 

 مراجعه کنید.وب سایت اصلی لاراولو به انتها رسدیم برای دیدن ویژگی های جدید دیگر می توانید به 

#لاراول_10 #لاراول #Laravel