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

در این پست قراره ورژن جدید لاراول یعنی 11.20 بررسی کنیم. در این ورژن متد collapseWithKeys به کالکشن ها، متد deduplicate به کلاس String و isFake به فساد ها اضافه شد.

 

اضافه شدن متد "collapseWithKeys" به کالکشن ها

این متد کالکشن های شما به یک کالشن تبدیل میکنه و با استفاده از کلید میاد یک nested array برای شما درست میکنه:

$c = collect([[1 => 'a'], [3 => 'c'], [2 => 'b']]);
$c->collapseWithKeys();
/*
[
    1 => "a",
    3 => "c",
    2 => "b",
]
*/

 برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن متد "deduplicate" به کلاس String

این متد کاراکتر های تکراری پاک میکنه همینطور شما میتونید کاراکتر تکراری مشخص کنید:

Str::deduplicate('this text have    spaces'); // 'this text have spaces'
Str::deduplicate(string: '/parantes//milwad/codenews//', character: '/'); // '/parantes/milwad/codenews/'
(string) str('milwaaaaaad')->deduplicate('a'); // 'milwad'

 برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن آپشن path به کامند "make:component"

در ورژن جدید لاراول شما میتونید مشخص کنید مسیر ساخت کامپوننت کجا باشه، در ورژن های قبلی به صورت پیشفرض در دایرکتوری components بود اما الان میتونید شخصی سازی کنید:

php artisan make:component Button --path custom/path

به صورت پیشفرض کامپوننت ها در مسیر "resources/views/components" ایجاد میشدند، اما الان کامپوننت شما میتونن هرجایی باشند!

 برای دیدن این Pull Request کلیک کنید.

 

پشتیبانی کردن از Enum ها در متد "where" در کلاس AssertableJson

از الان به بعد میتونید در متد where در کلاس AssertableJson از Enum ها بهتر استفاده کنید:

// Before
$this->getJson('/users/1')
    ->assertJson(fn (AssertableJson $json) => $json->where('role', UserRole::ENGINEER->value));

// After
$this->getJson('/users/1')
    ->assertJson(fn (AssertableJson $json) => $json->where('role', UserRole::ENGINEER));

 برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن input به کامند "make:notification" برای اسم فایل markdown

زمانی که برای کامند make:notification نامی ارسال نکنید یک کادر پایین باز میشه براتون برای اینکه نام را وارد کنید اما این کامند قابلیت ساخت view هم داره که در این ورژن این قابلیت اضافه شده:

codenews

 برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن متد "stackContains" و "hiddenStackContains" به کلاس Context

با استفاده از این دو متد میتونید چک کنید که کلیدی که مشخص میکنید آیا موجود هست یا نه. ما در کلاس Context میتونیم چند تا کلید پوش کنیم و همینطور با این متد ها چک میکنیم که آیا وجود دارند یا نه:

// Without Hidden
Context::push('plats', 'parantes', 'codenews');

Context::stackContains('plats', 'parantes'); // true
Context::stackContains('plats', 'codenews'); // true
Context::stackContains('plats', 'queztion'); // false

// Hidden
Context::pushHidden('plats', 'parantes', 'codenews');

Context::hiddenStackContains('plats', 'parantes'); // true
Context::hiddenStackContains('plats', 'codenews'); // true
Context::hiddenStackContains('plats', 'queztion'); // false

 برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن متد های "assertNotDeleted"، "assertNotReleased" و "assertNotFailed" به Queue

اگه شما بخواید برای Queue ها تست بنویسید میتونید از متد های جدید اون هم استفاده کنید. در ورژن جدید ما متد های جدید داریم که میتونیم برای اینکه جاب به صورت درست هندل شده استفاده کنیم:

use AppJobsSendEmailToActiveUsers;

$job = (new SendEmailToActiveUsers)->withFakeQueueInteractions(); // Fake Queue

$job->handle();

$job->assertNotDeleted(); // Assert the queue is not deleted
$job->assertNotFailed(); // Assert the queue is not failed
$job->assertNotReleased(); // Assert the queue is not released

 برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن متد "isFake" به فساد ها

شما میتونید چک کنید که فسادتون fake شده یا خبر با استفاده از متد isFake:

use IlluminateSupportFacadesBus;

Bus::isFake(); // false
Bus::fake();
Bus::isFake(); // true

 برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن "PHP Attribute" ها برای کلاس هایی دارای درایور

یک تغییر خیلی جالبی در حال دیدن هستیم که من خودم تعجب کردم! این فیچر این هست که شما میتونید درایور های سرویس هاتون مثل Storage, Auth و... با استفاده از Attirbute ها مشخص کنید:

class MediaController
{
    public function __construct(#[Storage('local')] public Filesystem $foo, #[Storage('s3')] public Filesystem $bar)
    {
    }
}

 به احتمال  زیاد برگاتون ریخته😂

همینطور شما میتونید برای Auth, Database, Cache, Log هم از Attribute ها استفاده کنید.

 برای دیدن این Pull Request کلیک کنید.

 

اضافه کردن اینترفیس "ShouldntReport" به Exception ها

شما میتونید با استفاده از این اینترفیس به لاراول بگید که این exception رو report نکن.

  برای دیدن این Pull Request کلیک کنید.

 

اضافه شدن "MixFileNotFoundException":

یک Exception جدید به لاراول اضافه شده به نام MixFileNotFoundException. هدف این کار این بوده که شما میتونید پیام های ارور Mix شخصی سازی کنید.

 برای دیدن این Pull Request کلیک کنید.

 

تغییرات جزئی:

  • آپدیت کردن تست های متد "whereNone" در کوئری بیلدر - #52351
  • بهتر کردن متد "block" در کش - #52349
  • بهتر کردن متد "choice" در Translation کلاس - #52343
  • آپدیت کردن فایل security.md برای ارسال ایمیل - #52338
  • آپدیت کردن phpdoc متد "resolveRouteBindingQuery" در مدل ها - #52339
  • آپدیت کردن phpdoc متد "afterCreating" در فکتوری ها - #52335
  • حذف کردن کلاس اشتباه - #52322
  • اضافه کردن middleware برای قبل از ارسال درخواست - #52323
  • آپدیت کردن لول PHPStan به 1 - #51956
  • اضافه شدن قابلیت named parameter به متد های "whenLoaded", "whenAggregated", "whenCounted" در ریسورس ها - #51342
  • اضافه شدن متد "whenExistsLoaded" به ریسورس ها - #52295
  • ریفکتور کردن کامند ها - #52387
  • اضافه شدن "list" به اعتبارسنجی - #52385
  • آپدیت کردن phpdoc متد های where(All|Any|None) در کوئری بیلدر - #52388
  • اضافه شدن متد "insertGetId" به درایور MySQL دیتابیس - #52390

 

برای دیدن فایل changelog.md این ورژن کلیک کنید.

برای دیدن release این ورژن کلیک کنید.

 

0 🔥
0 🎉
0 😮
0 👍
0 💜
0 👏
میلاد خسروی
نویسنده کد نیوز

برنامه نویس فان | Fun Developer یک آدم ساده که عاشق برنامه نویسی و کد زدنه :) تلاش میکنه تا به بقیه کمک کنه. توسعه دهنده هسته لاراول و فضای اوپن سورس. فاندر پرانتز و کد نیوز.

0+ نظر

برای ثبت نظر ابتدا ورود کنید.

0 نظر

    اولین نفر باش که نظر ثبت میکنی :) یعنی یه کامنت به ما نمیرسه 😁