لبهی تیزِ RouteParameter تو Laravel: مدلت رو bind نمیکنه
اتریبیوتِ #[RouteParameter] تو Laravel راهِ تمیزیه برای اینکه پارامتر روت رو با تایپ مشخص تو کلاسهایی مثل form request داشته باشی، بدون توسل به request()->route() یا انوتیشنِ PHPDoc. ولی نویسنده به یه لبهی تیز اشاره میکنه: این اتریبیوت فقط مقدارِ فعلیِ پارامتر روت رو میخونه و خودش route model binding انجام نمیده. پس اگه امضای اکشنِ کنترلر به Laravel اطلاعات کافی برای bind کردن ضمنیِ مدل نده، ممکنه بهجای مدل، رشتهی خامِ روت دستت بیاد.
این محتوا بهصورت خودکار با استفاده از هوش مصنوعی تولید شده، و بررسی نهایی اون پیش از استفاده توصیه میشه. مسئولیت استفاده بهعهده کاربر هست. برای مطالعه متن اصلی خبر، اینجا رو کلیک کن
خلاصهٔ کاملتر
نویسنده (Michael Dyrynda) توضیح میده که اتریبیوتهای container تو Laravel از نسخهی ۱۱ بهعنوان بخشی از قابلیتِ contextual attributesِ سرویس کانتینر اومدن، کنارِ اتریبیوتهایی مثل #[Config]، #[Cache] و #[CurrentUser]. اینها یه مشکل واقعی رو حل میکنن: قبلاً اگه میخواستی به یه مدلِ bindشدهی روت بیرون از امضای کنترلر دسترسی داشته باشی، یا باید request()->route('event') صدا میزدی یا یه انوتیشنِ @var اضافه میکردی که تایپش فقط تو کامنت زندگی میکرد.
#[RouteParameter] به اون مقدار یه جای typeدار میده. بهصورت constructor-promoted و در صورت دلخواه readonly، و ابزارِ کدت هم تایپش رو میفهمه:
خلاصهٔ کاملتر این خبر رو میتونی با داشتن اشتراک ویژه بخونی!
اشتراک رایگان
- دسترسی به خلاصهٔ کوتاه خبر
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی مقاله
- عدم نمایش تبلیغات
اشتراک ویژه
- دسترسی به خلاصهٔ کوتاه خبر
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی مقاله
- عدم نمایش تبلیغات




