قابلیتهای جدید لاراول ۱۳.۷.۰
خلاصهٔ کاملتر
لاراول ۱۳.۷.۰ یه آپدیت نسبتاً پر و پیمون بود که چند تا قابلیت جدید و کاربردی باهاش اومد. بذارید با مهمترینشون شروع کنیم.
اولین و شاید جالبترین قابلیت، معرفی اینترفیس Interruptible برای جابهای صفبندیشدهست. قبلاً وقتی ورکر یه سیگنالی مثل SIGTERM دریافت میکرد، جابهای در حال اجرا عملاً هیچ راهی نداشتن که بفهمن چی داره اتفاق میافته. حالا با این اینترفیس جدید، میشه توی جاب یه متد interrupted() تعریف کرد که دقیقاً وقتی سیگنال میرسه فراخونده میشه.
این قابلیت برای جابهای طولانی خیلی مهمه. مثلاً فرض کن یه جاب داری که داره یه پردازش سنگین انجام میده و ورکر داره ریاستارت میشه. با Interruptible میتونی یه فلگ تنظیم کنی، منابع رو آزاد کنی یا وضعیت فعلی رو ذخیره کنی تا کار از دست نره.
در کنار این، یه رویداد جدید به اسم WorkerInterrupted هم اضافه شده که به توسعهدهندهها امکان میده وقتی ورکر interrupt میشه، اون رو لاگ بزنن یا مانیتور کنن. این برای observability و نظارت روی وضعیت ورکرها خیلی کمک میکنه.
قابلیت دوم اینه که یه دایرکتیو Blade جدید به اسم @fonts اضافه شده. این دایرکتیو با همکاری متد Vite::fonts() کار میکنه و لینکهای preload برای فونتها رو به صورت خودکار توی HTML رندر میکنه. اطلاعات فونتها از manifest ای که پلاگین Vite تولید میکنه خونده میشه و میشه فامیلیهای خاص رو هم فیلتر کرد. نتیجه اینه که فونتها سریعتر لود میشن و تجربه کاربری بهتری داری.
یه تغییر دیگه اینه که حالا میشه توی TestResponse چند تا JSON path رو به صورت یکجا assert کرد. یعنی دیگه لازم نیست برای هر فیلد یه خط جداگانه بنویسی و میتونی یه آرایه بدی و همهشون رو با هم چک کنی. این کار تستهای API رو تمیزتر و کوتاهتر میکنه.
همچنین enum مربوط به SortDirection حالا توی کالکشنها و کلاس Arr هم پشتیبانی میشه. یعنی به جای اینکه رشتههای 'asc' یا 'desc' بنویسی، میتونی از enum استفاده کنی که کد رو type-safeتر میکنه. به علاوه، متد keyBy() در LazyCollection حالا از enum هم به عنوان کلید پشتیبانی میکنه.
در کنار این قابلیتهای اصلی، یه سری باگفیکس و بهبودهای کوچیکتر هم توی این ورژن گنجونده شده که کیفیت کلی فریمورک رو بالاتر میبره.
نکات کلیدی:
- اینترفیس Interruptible به جابها اجازه میده به سیگنالهای ورکر مثل SIGTERM واکنش نشون بدن
- رویداد WorkerInterrupted برای مانیتورینگ وضعیت ورکرها اضافه شد
- دایرکتیو @fonts و متد Vite::fonts() بارگذاری فونتها رو بهینه میکنن
- Bulk JSON path assertion در TestResponse برای تستهای تمیزتر
- پشتیبانی از SortDirection enum در کالکشنها و کلاس Arr
- پشتیبانی از enum در متد keyBy() کالکشنهای lazy




