لاراول ۱۳.۱۵ با اکسسورهای ترجمهٔ تایپدار اومد
خلاصهٔ کاملتر
تیم لاراول نسخهٔ ۱۳.۱۵.۰ رو منتشر کرد که چند قابلیت تازه و چند وصلهٔ امنیتی داره. شاخصترین تغییر، اکسسورهای ترجمهٔ تایپدارـه. مشکل این بود که هلپرهای ترجمه نوع گستردهای برمیگردونن: __() نوع array|string|null میده و trans() نوع Translator|array|string. تو Blade این اوکیه، ولی تو کدِ تایپسخت و آنالیز استاتیک دردسر میسازه. این نسخه دو متد تایپدار رو Translator اضافه میکنه که یه نوع مشخص برمیگردونن:
public function label(): string
{
return trans()->string($this->name);
}
public function options(): array
{
return trans()->array($this->options_key);
}طبق توضیح مقاله، این رویکرد دقیقاً مثل هلپرهای تایپدار موجود مثل config() و request() کار میکنه.
از قابلیتهای دیگه، کامپوننت JsonSchema حالا یه دیسریالایزر fromArray() گرفته که یه آرایهٔ خام JSON Schema رو برمیگردونه به آبجکتهای Type (یعنی عکسِ کارِ سریالایز)، و پشتیبانی از یونیونِ چند نوعی هم به سازندهٔ اسکیما اضافه شده.
یه بخش مهم دیگه، درایور صف اختصاصی برای Laravel Cloud ـه. چند تغییر با هم یه درایور صف برای صفهای مدیریتشدهٔ Cloud رو لند میکنن: صفهای مدیریتشده قبل از سرویسپروایدرها بوت میشن، اگه یه صف تنظیمشده پیدا نشه استثنای ManagedQueueNotFoundException پرت میشه، و نرمالسازی نام صفهای FIFO هم درست شد. هدر شناسهٔ درخواست هم از X-Request-ID به Cloud-Request-ID تغییر کرد و حالا تو لاگها هم چاپ میشه. علاوه بر این، حالا میشه به Queue::route() کیسهای enum رو هم برای نام صف و هم برای کانکشن پاس داد.
از نظر امنیتی دو تا اصلاح مهم هست. اولی دور زدن اعتبارسنجی date_equals ـه: این قانون از مقایسهٔ شل (loose) استفاده میکرد. یه رشتهٔ تاریخِ نامعتبر به null تبدیل میشه و null == 0 برابر true درمیاد، پس یه تاریخ نامعتبر میتونست در برابر یه تاریخ مرجع که به مقدارِ falsy تبدیل میشه (مثلاً 1970-01-01 00:00:00) از اعتبارسنجی رد بشه. وصله برای عملگرِ تساوی از مقایسهٔ سخت (strict) استفاده میکنه و مقایسهٔ شل رو فقط برای آبجکتهای DateTime معتبر نگه میداره.
دومی محدود کردن سریالایز روتینگـه: حالا فرایند unserialize تو روتینگ کلاسهایی رو که قبول میکنه محدود میکنه و اینجوری سطح حمله برای تزریق آبجکت موقع کش و حلکردن روتها کمتر میشه. در کنارش چند اصلاح تو هلپر Number هم اومده؛ مثلاً Number::fileSize() حالا مقادیر بایت منفی رو هندل میکنه و Number::pairs() برای استپ صفر استثنا پرت میکنه تا جلوی حلقهٔ بینهایت رو بگیره.
نکات کلیدی:
- دو متد تایپدار trans()->string() و trans()->array() برای گرفتن ترجمه با نوع مشخص، مفید برای کد تایپسخت و آنالیز استاتیک
- درایور صف اختصاصی برای صفهای مدیریتشدهٔ Laravel Cloud و تغییر هدر به Cloud-Request-ID
- میشه به Queue::route() کیسهای enum برای نام صف و کانکشن پاس داد
- وصلهٔ امنیتی برای دور زدن date_equals با مقایسهٔ سخت روی عملگر تساوی
- محدود شدن کلاسهای مجاز موقع unserialize تو روتینگ، برای کم کردن خطر تزریق آبجکت
- دیسریالایزر fromArray() برای کامپوننت JsonSchema و پشتیبانی از یونیونِ چند نوعی




