لاراول ۱۳.۸: بررسی همه صفها با یک دستور
خلاصهٔ کاملتر
لاراول نسخه ۱۳.۸ با یه دسته قابلیت جدید و کاربردی اومده که زندگی توسعهدهندهها رو راحتتر میکنه. مهمترین تغییر، اضافه شدن متدهای بررسی صفهاست که دیگه نیازی به چندین فراخوانی جداگانه نداری.
متدهای Queue-Wide Inspection سه تا متد جدید allReservedJobs()، allDelayedJobs() و allPendingJobs() اضافه شدن که بدون نیاز به مشخص کردن اسم صف، همه jobها رو یکجا برمیگردونن. قبلاً باید برای هر صف جداگانه فراخوانی میکردی و نتیجهها رو merge میکردی:
// قبل — یه کوئری برای هر صف
Queue::reservedJobs('queue1')
->merge(Queue::reservedJobs('queue2'))
->merge(Queue::reservedJobs('queue3'));
// بعد — یه فراخوانی برای همه صفها
Queue::allReservedJobs();
Queue::allDelayedJobs();
Queue::allPendingJobs();هر متد یه collection از نمونههای InspectedJob برمیگردونه که شامل uuid، name، attempts و createdAt هستن. این خیلی به درد دیپلویمنت میخوره — وقتی میخوای مطمئن بشی هیچ jobی در حال اجرا نیست قبل از اینکه workerها رو متوقف کنی. این متدها با درایورهای database، Redis و fake کار میکنن.
رویدادهای WorkerPausing و WorkerResuming دو رویداد جدید اضافه شدن که وقتی یه worker سیگنال SIGUSR2 یا SIGCONT دریافت میکنه فایر میشن. این رویدادها بهت امکان میدن که تغییرات حالت workerها رو لاگ بگیری یا آلرت بفرستی، مثلاً در زمان دیپلوی.
متد assertSessionMissingInput برای تستنویسی، حالا میتونی با assertSessionMissingInput() چک کنی که یه فیلد خاص در session نیست — این متد مکمل assertSessionHasInput() که قبلاً بود محسوب میشه:
$response->assertSessionMissingInput('name');
$response->assertSessionMissingInput(['connection_id', 'repository', 'source_branch']);پشتیبانی از SortDirection Enum در Query Builder دنبالهی پشتیبانی از enum نوع SortDirection که در نسخه ۱۳.۷ به collections اضافه شده بود، حالا متدهای orderBy()، orderByDesc() و orderByRaw() هم این enum بومی PHP 8.6 رو قبول میکنن:
use SortDirection;
DB::table('users')
->orderBy('name', SortDirection::Descending)
->get();فیلتر محیطی برای schedule:list دستور schedule:list یه آپشن --environment گرفته که میتونی باهاش taskهای زمانبندیشده رو بر اساس محیط اجرا فیلتر کنی. مثلاً روی سرور production فقط taskهایی که واقعاً اجرا میشن رو ببینی، نه taskهایی که مختص local یا staging هستن.
اکشنهای سفارشی برای کلیدهای خارجی کلاس ForeignKeyDefinition حالا رشتههای دلخواه رو برای onDelete() و onUpdate() قبول میکنه. این برای سینتکسهای خاص PostgreSQL مثل SET NULL جزئی روی کلیدهای خارجی ترکیبی خیلی مفیده و یه تعارض قدیمی با PHPStan رو هم برطرف میکنه.
بهبودهای متفرقه علاوه بر همه اینا، middleware مشخصشده با attribute #[Middleware] دیگه با middleware مسیر merge میشه (قبلاً نادیده گرفته میشد)، درایور پیشفرض میل حالا backed enum هم قبول میکنه، و اتصالات SQS از named credential providerهای AWS SDK پشتیبانی میکنن. یه دسته بهبود type annotation و docblock هم توسط چند contributor ارائه شده.
نکات کلیدی:
allReservedJobs()،allDelayedJobs()وallPendingJobs()بررسی همه صفها رو با یه فراخوانی ممکن میکنن- رویدادهای
WorkerPausingوWorkerResumingبرای مانیتورینگ حالت workerها اضافه شدن assertSessionMissingInput()متد جدید تست برای چک کردن نبود فیلد در sessionorderBy()و متدهای مشابه حالا enum بومیSortDirectionاز PHP 8.6 رو قبول میکنن- دستور
schedule:listبا آپشن--environmentقابل فیلتر شد onDelete()وonUpdate()روی کلیدهای خارجی حالا مقادیر سفارشی میپذیرن




