برنامه نویس فان | Fun Developer یک آدم ساده که عاشق برنامه نویسی و کد زدنه :) تلاش میکنه تا به بقیه کمک کنه. توسعه دهنده هسته لاراول و فضای اوپن سورس. فاندر پرانتز و کد نیوز.
در این پست قراره ورژن جدید لاراول یعنی 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 هم داره که در این ورژن این قابلیت اضافه شده:
برای دیدن این 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 این ورژن کلیک کنید.
اولین نفر باش که نظر ثبت میکنی :) یعنی یه کامنت به ما نمیرسه 😁