لاراول ۱۳.۱۷: متادیتای رسمی برای روتها
خلاصهٔ کاملتر
تیم لاراول نسخه ۱۳.۱۷.۰ رو منتشر کرده و طبق گزارش لاراول نیوز، این نسخه با پشتیبانی رسمی از متادیتای روت، سازگاری با پولرهای تراکنشی پستگرس، دستور جدید dev:list، و امکان مشخص کردن جابهایی که نباید ریترای بشن همراهه.
قابلیت متادیتای روت به توسعهدهندهها اجازه میده دادههای ساختاریافته رو مستقیم روی روت تعریف کنن، بهجای اینکه مجبور باشن اونا رو تو آرایه اکشن روت جا بدن. این متادیتا از route:cache هم رد میشه و تو گروهها هم بهارث میرسه؛ اگه گروه و روت هردو متادیتا داشته باشن، آرایههای تودرتو با هم ترکیب میشن ولی مقدارهای ساده جایگزین میشن.
Route::get('/users', [UserController::class, 'index'])
->metadata(['head' => ['title' => 'Users']]);
$request->route()->getMetadata('head.title'); // 'Users'برای خوندن متادیتا هم متد getMetadata() هست که نوتیشن نقطهای و یه مقدار پیشفرض اختیاری رو پشتیبانی میکنه. اگه بخوای متادیتا رو کامل جایگزین کنی نه ترکیب، متد setMetadata() هم در دسترسه.
تغییر مهم بعدی، پشتیبانی از پولرهای تراکنشی پستگرس مثل PgBouncer، RDS Proxy و Neonـه. تو این مدل پولینگ، کانکشن سرور فقط برای یه تراکنش نگه داشته میشه و همین باعث میشه prepared statementها با پولر ناسازگار بشن؛ لاراول حالا این موضوع رو خودش مدیریت میکنه.
'pgsql' => [
'driver' => 'pgsql',
'pooled' => true,
'url' => env('DATABASE_URL'),
],وقتی pooled روی true تنظیم بشه، اتصال به emulated prepares سوییچ میکنه که با پولرهای حالت تراکنشی سازگاره. دستورهایی مثل مایگریشن، schema:dump و db:wipe هم خودکار به آدرس direct وصل میشن.
چندتا تغییر کوچیکتر هم به این نسخه اضافه شده: دستور جدید dev:list همه پردازشهای dev ثبتشده رو همراه با منبع ثبتشون (اپ خودت یا یه پکیج) نشون میده. جابهای صف هم حالا میتونن با متد retry() روی خود کلاس اکسپشن مشخص کنن که نباید دوباره امتحان بشن. یه باگ تو ترتیب فراخوانی between() و timezone() تو زمانبندی هم فیکس شده، و فلگ جدید --without-migration-data به schema:dump اضافه شده.
نکات کلیدی:
- پشتیبانی رسمی از متادیتای روت با نوتیشن نقطهای و بهارثرسی تو گروهها
- سازگاری با پولرهای تراکنشی پستگرس مثل PgBouncer، RDS Proxy و Neon
- دستور جدید dev:list برای دیدن پردازشهای dev ثبتشده
- امکان مشخص کردن عدم ریترای جاب از طریق متد retry() روی اکسپشن
- فیکس ترتیب فراخوانی between()/timezone() و فلگ --without-migration-data برای schema:dump




