لاراول 13.35 اومد: Route::query و defaults() برای مدلها
خلاصهٔ کاملتر
تیم لاراول نسخهٔ 13.35.0 رو منتشر کرده. مهمترین تغییر Route::query() هست که برای متد HTTP QUERY روت میسازه. QUERY یعنی یه متد امن مثل GET که برخلاف اون میتونه body هم داشته باشه، پس برای endpointهای جستوجو که فیلترهاشون تو query string جا نمیشه عالیه. تا قبل از این باید از Route::match(['QUERY'], ...) استفاده میکردی.
Route::query('/products/search', SearchProductsController::class);یه نکتهٔ مهم: برخلاف نسخهای که تو لاراول 14 merge شده، اینجا CSRF با درخواستهای QUERY دقیقاً مثل POST رفتار میکنه. یعنی اگه روتت تو middleware گروه web باشه، یا باید CSRF token بفرستی یا اونو به لیست except اضافه کنی. حالا QUERY تو لیست verbهای روتر هست، پس Route::any() هم اونو پوشش میده.
متد defaults() هم از لاراول 14 به 13 اومده، ولی اختیاری و با trait به اسم HasDefaultAttributes. این متد نسخهٔ متدیِ پراپرتی $attributes هست، پس مقدار پیشفرض میتونه از config یا feature flag یا تاریخ امروز بیاد. مقدارهای defaults() به $attributes اولویت دارن و خام هستن، یعنی از cast و mutator رد نمیشن.
تو تستها، fakeهای Queue و Bus و Event و Notification حالا بهجای callback یه آرایه از پراپرتیهای مورد انتظار هم قبول میکنن. مقایسه strict هست، بهجز مدلهای Eloquent که با is() مقایسه میشن. پراپرتیها باید public باشن.
Queue::assertPushed(ProcessPodcast::class, [
'podcast' => $podcast,
'user' => $user,
'status' => 'pending',
]);گزینهٔ --memory تو queue:work حالا درصدی از memory_limit رو قبول میکنه، مثلاً با 60% و memory_limit برابر 512M، worker حدود 307 مگابایت متوقف میشه. ولی اگه memory_limit برابر -1 باشه (که تو CLI رایجه) worker هیچوقت بهخاطر حافظه متوقف نمیشه.
برای scheduler، Schedule::alwaysOnOneServer() هم onOneServer() رو روی همهٔ taskها اعمال میکنه (closureهای بیاسم رد میشن و cache مشترک لازمه). Schedule::hasBeenInterruptedSince() هم به کامندهای طولانی اجازه میده موقع deploy تو یه نقطهٔ امن متوقف بشن.
نکات کلیدی:
- Route::query() برای متد HTTP QUERY اضافه شده و CSRF مثل POST روش چک میشه.
- defaults() تو لاراول 13 فقط با trait HasDefaultAttributes کار میکنه و مقدارهاش cast نمیشن.
- fakeهای Queue، Bus، Event و Notification آرایهٔ پراپرتیها رو قبول میکنن.
- queue:work --memory=60% با memory_limit=-1 عملاً بیاثره.
- response()->markdown() پاسخ با content type text/markdown برمیگردونه.
- گزینهٔ lazy_root_creation برای دیسکهای local پوشه رو موقع اولین نوشتن میسازه.




