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

نسخه 12.9 از فریمورک لاراول منتشر شد که شامل ویژگیهای جدید و کاربردیای است. از جمله این ویژگیها میتوان به درایور کش ممویشده اشاره کرد که باعث افزایش کارایی از طریق نگهداری دادههای کششده در حافظه طی اجرای درخواست میشود. همچنین، قابلیت بارگذاری خودکار روابط مدلها اضافه شده که کار با روابط Eloquent را سادهتر و سریعتر میسازد. یکی دیگر از امکانات مهم، افزودن callback برای مدیریت شکست تراکنشهای پایگاهداده است که امکان اجرای کدی خاص در صورت ناموفق بودن تراکنش را فراهم میکند. این نسخه شامل بهبودهای دیگری نیز هست که تجربه توسعه با لاراول را بهتر از قبل میسازد.
Memoized Cache Driver
در نسخه جدید لاراول یک درایور جدید به نام "memoized
" اضافه شده به سیستم کش لاراول. این درایور به این شکل کار میکنه که یک بار از کش دیتا برمیگردونه و بعدش دیتا از در مموری (memory) ذخیره میکنه و اطلاعات برمیگردونه:
Cache::get('foo'); // hits the cache
Cache::get('foo'); // hits the cache
Cache::get('foo'); // hits the cache
Cache::memo()->get('foo'); // hits the cache
Cache::memo()->get('foo'); // does not hit the cache
Cache::memo()->get('foo'); // does not hit the cache
برای دیدن این Pull Request کلیک کنید.
Freeze Time Test Updates
در آپدیت جدید لاراول دو متد به نام "freezeTime()
" و "freezeSecond()
" یک تغییری کردند و این تغییر به این شکل هست که اگه callback ارسال نشه، تاریخ برمیگردونه:
// Before
$now = now();
Carbon::setTestNow($now);
$post->slug = $slug;
$post->save();
$package->refresh();
$this->assertTrue($now->equalTo($post->updated_at));
// After
$now = $this->freezeSecond();
$post->slug = $slug;
$post->save();
$package->refresh();
$this->assertTrue($now->equalTo($post->updated_at));
برای دیدن این Pull Request کلیک کنید.
Add a Callback for DB Transaction Failures
در آپدیت جدید لاراول به شما این امکان میده که زمانی که یک تراکنش دیتابیس با موفقیت انجام نشد و fail بشه، بتونید یک کاری انجام بدید، مثلا برای ادمین ایمیل ارسال بشه و... :
DB::transaction(
callback: function () {
// do DB stuff
},
onFailure: function () {
Notification::send($admin, new SomethingImportantBroke());
}
);
برای دیدن این Pull Request کلیک کنید.
Model Relationship Autoloading from a Model
در آپدیت جدید لاراول شما میتونید روابط به صورت اتوماتیک برای یک مدل لود کنید. با استفاده از متد "withRelationshipAutoloading()
" میتونید این کار انجام بدید:
// Before
$post->tags->withRelationshipAutoloading();
$post->authors->withRelationshipAutoloading();
// After
$post->withRelationshipAutoloading();
برای دیدن این Pull Request کلیک کنید.
Add Descriptive Error Messages to assertViewHas()
در آپدیت جدید لاراول زمانی که شما از متد "assertViewHas()
" در تست نویسی استفاده کنید، متن ارور بهتری براش شما نمایش خواهد داد:
$response->assertViewHasAll([
'key_without_value',
'key_with_value' => 10,
'key_with_closure' => fn ($value) => $value == 10,
'key_with_model' => Customer::first(),
'key_with_collection' => Customer::factory()->count(10)->create(),
]);
زمانی که تست ها ران بشه و ارور دریافت کنید:
# Before
1) TestsFeatureAppHttpCustomerControllerTest::a_test_example
Failed asserting that false is true.
# After
1) TestsFeatureAppHttpCustomerControllerTest::a_test_example
Failed asserting that 'key_with_value' matches the expected value.
Failed asserting that 0 matches expected 10.
برای دیدن این Pull Request کلیک کنید.
Fluent "make()" Method
در لاراول 12.9 شما یک متد جدید در کلاس Fluent
دارید که به سادگی برای شما یک instance از این کلاس میسازه:
use IlluminateSupportFluent;
$instance = Fluent::make($attributes);
برای دیدن این Pull Request کلیک کنید.
تغییرات جزئی:
- آپدیت کردن phpdoc کلاس
ViewErrorBag
پراپرتی ها - #55329 - آپدیت کردن phpdoc کلاس
MessageBag
پراپرتی ها - #55327 - اضافه شدن جنریک ها به کلاس
Schema/Builder
برای استفاده بهتر - #55330 - آپدیت کردن پیام های ارور
DetectsLostConnections
در دیتابیس - #55331 - ویرایش نام تست - #55332
- فیکس کردن ارور serialization کردن در لود کردن روابط به صورت اتوماتیک - #55345
- اضافه کردن تست برای اعتبارسنجی کلاس Uniqueی - #55351
- اضافه کردن "
@throws
" به داک بلاک ها - #55361 - آپدیت کردن داک بلاک متد "
propagateRelationAutoloadCallbackToRelation()
" در الکوئنت - #55363 - فیکس کردن فایل لودر ترجمه ها (translations) زمانی که کلید موجود نیست - #55342
- فیکس کردن ایونت های pivot زمانی که با
withPivotValue
کار میکنیم - #55280 - اضافه کردن تست برای متد "
lastModified()
" در فایل سیستم -#55389
- پشتیبانی از "
pda/pheanstalk
" ورژن 7 - #55397 - اضافه کردن تست برای فایل سیستم - #55399
- آپدیت کردن ورژن vite توسط ربات - #55402
- اضافه کردن جنریک به متد های کالکشن - #55380
- اضافه کردن تست برای متغیر های env به صورت چندتایی - #55406
- فیکس کردن آدرس cc/bcc/replyTo در ایمیل ها - #55404
اولین نفر باش که نظر ثبت میکنی :) یعنی یه کامنت به ما نمیرسه 😁