به تازگی تیم توسعه لاراول نسخه جدیدی از لاراول 7 با شماره ورژه 7.10.0 را منتشر کرد و برای استفاده در دسترس قرار داد. اگر دوست دارید تا با ویژگی های جدید این نسخه و تغییرات آن آشنا شوید در ادامه با ما همراه باشید.
از مهم ترین ویژگی هایی که به این نسخه اضافه شده است می توان به امکان قفل کردن دیتابیس حافظه کش (Database Cache Locking) یا بعبارتی دیگر پشتیبانی از قفل کردن کش دیتابیس درایور و محدودیت های همزمانی Same-Session (Same-Session Concurrency Restrictions) اشار کرد که در زیر به توضیح ویژگی های جدید در این نسخه می پردازیم.
بررسی Truth-test تنها با یک بسته
سجورس اوتجس (Sjors Ottjes) روشی را به شکل backward-compatible ایجاد کرده است که می توان تست های truth-test را تنها با یک بسته type-hinted بررسی کرد. برای درک بهتر به کد زیر دقت کنید:
// Before
Mail::assertQueued(SubpictureFinishedEmail::class, function (SubpictureFinishedEmail $email) use ($user) {
return $email->user->id === $user->id;
});
// With 7.10+
Mail::assertQueued(function (SubpictureFinishedEmail $email) use ($user) {
return $email->user->id === $user->id;
});
// or with a short closure
Mail::assertQueued(
fn (SubpictureFinishedEmail $email) => $email->user->id === $user->id
);
شناسه Same-session ID برای محدود کردن درخواست های همزمان (همزمانی درخواست ها)
این روابط و شناسه خاص باعث می شود تا از تداخل session ها جلوگیری شود به این شکل که تا درخواست های هم زمان را در پایان در خواست های قبلی پیاده سازی کند. دلیل اصلی استفاده آن، پیشگیری از درخواست های همزمان و نوشتن داده های متناقض برای جلسه و از بین رفتن اطلاعات است.
برای دریافت جزئیات بیشتر از این لینک استفاده کنید.
شمارش Pagination به عنوان Subquery
بیساری از کاربران در رابطه با کوئری های Maginating به همراه دستورات groupBy و دارای شرط (having statements) دارای مشکلات زیادی هستند و درخواست هایی را ارائه داده اند،و این تغییر به عنوان بخشی از درخواست های کاربران برای ساده تر شدن کارها و حل مشکلات آنها است.
فرمان cast:make
دستور artisan make:cast در خط فرمان کنسول نام کست (cast) را از کاربر گرفته و آن را در app/Casts ذخیره می کند. اجرای این دستور باعث ایجاد یک کلاس رابط CastsAttributes می شود.
آزاد کردن یا بررسی (Assert) Database Count
$this->assertDatabaseCount('users', 50);
// A failure would look like:
// "Failed asserting that table [users] matches expected entries count of 50. Entries found: 1."
حالت Auth برای درایور ایمیل SMTP
برای دیدن جزئیات بیشتر برای این قسمت روی این لینک کلیک کنید.
اضافه شدن hasNamedScope به مدل پایه
ابتدا متد hasScope اضافه شد که به بررسی وجود اسکوپ می پردازد. و در نهایت این متد به شکل hasNamedScope تغییر کرد تا بررسی وجود اسکوپ با نام را نیز انجام بدهد.
برای درک بهتر کد زیر را بررسی کنید:
public function index(Request $request)
{
$post = Post::query();
foreach ($request->get('filters', []) as $filter) {
if ($post->hasNamedScope($filter)) {
$post->{$filter}();
}
}
return $post->paginate();
}
باید توجه کنید که این تغییر نام از نسخه 7.10.0 انجام شده است.
در نهایت لیست کلی تغییرات و ویژگی های جدید اضافه شده به این نسخه از لاراول و تغییرات آن به نسبت نسخه ی قبل لارول را می توانید از لینک زیر مشاهده کنید.
مقایسه لاراول 7.9 و لاراول 7.10.0
تغییرات لاراول v7.10.0
Added artisan make:cast command (#32594)
Added Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase::assertDatabaseCount() (#32597)
Allow configuring the auth_mode for SMTP mail driver (#32616)
Added hasNamedScope() function to the Base Model (#32622, #32631)
Allow doing truth-test assertions with just a closure (#32626, f69ad90, 22d6fca)
Run pagination count as subquery for group by and havings (#32624)
Added Callbacks with Output to Console Schedule (#32633, 35a7883, 8d8d620)
Added Cache::lock() support for the database cache driver (#32639, 573831b)
Same-session ID request concurrency limiting (#32636)
Add skipUntil and skipWhile methods to the collections (#32672, #32676)
Support delete with limit on sqlsrv (f16d325)
Added mergeFillable() and mergeGuarded() to Model (#32679)
Prevents a memory leak in Faker (2228233)
Fixed setting component name and attributes (#32599, f8ff3ca)
Fixed Illuminate\Foundation\Testing\TestResponse::assertSessionHasInput() (f0639fd)
Set relation connection on eager loaded MorphTo (#32602)
Filtering null’s in hasMorph() (#32614)
Fixed Illuminate\Foundation\Console\EventMakeCommand::alreadyExists() (7bba4bf)
Fixed Illuminate\Console\Scheduling\Schedule::compileParameters() (cfc3ac9, 36e215d)
Fixed bug with model name in
Illuminate\Database\Eloquent\RelationNotFoundException::make() (f72a166)
Allow trashed through parents to be included in has many through queries (#32609)
Changed Illuminate/Database/Eloquent/Relations/Concerns/AsPivot::fromRawAttributes()
(6c502c1)
Restore оnly common relations (#32613, d82f78b, 48e4d60)
Use single space if plain email is empty in Illuminate\Mail\Mailer::addContent() (0557622)
Remove wasted file read when loading package manifest in Illuminate\Foundation\PackageManifest::getManifest() (#32646)
Do not change character and collation for some columns on change (fccdf7c)
Use table name when resolving has many through / one relationships (8d69454)
نظر شما چیست؟ شما می توانید نظرات ،پیشنهادات و اطلاعات خود را در رابطه با این مطلب و موضوعات مربوط از طریق قسمت نظرات با ما و سایر بازدیدکنندگان در میان بگذارید.