لاراول 9 رسید و با خود ویژگی های جدید و تغییراتی ارائه کرده است. بد نیست در یک نگاه ویژگی های لاراول 9 را بررسی کنیم.
همانطور که میدانید، لاراول با انتشار لاراول 8 به نسخه های سالانه تبدیل شد. پیش از این، نسخه های اصلی هر 6 ماه یکبار منتشر می شد.
این انتقال به منظور کاهش بار تعمیر و نگهداری بر روی جامعه و به چالش کشیدن تیم توسعه استفاده از ویژگیهای جدید و شگفتانگیز لاراول، بدون ایجاد تغییرات اساسی است.
بنابراین، انجمن توسعه دهندگان لاراول انواع مختلفی از قابلیت های قوی را به لاراول 8 ارائه نمودند که سازگاری با نسخه های قدیمی را شکسته است، مانند پشتیبانی از آزمایش موازی (parallel testing support)، بسته های بهبود یافته ی آغازگر Breeze (در آموزش لاراول به شیوه های مختلف نصب آن اشاره کرده ایم)، بهبودهای کلاینت HTTP، و حتی انواع جدید ارتباط Eloquent مانند “یکی از چندین (has one of many)” را دارد.
بنابراین، این تعهد به ارسال ویژگیهای جدید عالی در طول نسخه فعلی احتمالاً منجر به این خواهد شد که نسخههای «مهم» آینده عمدتاً برای کارهای «نگهداری» مانند ارتقاء وابستگیهای بالادستی مورد استفاده قرار گیرند، که در این یادداشتهای انتشار قابل مشاهده است.
لاراول 9 با ارائه پشتیبانی از اجزای زیر تغییراتی در لاراول 8 ارائه نموده است.
- Symfony 6.0
- Symfony Mailer
- Flysystem 3.0
- لیست route:list بهبودیافته
- درایور پایگاه داده لاراول Scout
- نحو (syntax) جدید Eloquent Accessor/mutator
- اتصالات ضمنی مسیر (implicit route bindings via Enums)
لاراول 9 به حداقل نسخه PHP 8.0 نیاز دارد.
Symfony Mailer
حمایت از سیمفونی Mailer توسط افراد زیر انجام شد.
نسخههای قبلی لاراول از کتابخانه Swift Mailer برای ارسال ایمیلهای خروجی استفاده میکرند. با این حال، کتابخانه Swift Mailer دیگر پشتیبانی نمی شود و Symfony Mailer جایگزین آن گردیده است.
لطفاً راهنمای ارتقا را بررسی کنید تا در مورد اطمینان از سازگاری برنامه خود با Symfony Mailer آگاه شوید.
Flysystem 3.x
پشتیبانی Flysystem 3.x توسط Dries Vints انجام شده است.
لاراول 9 فایل سیستم ما را به Flysystem 3.x وابسته می کند. فایل سیستم تمام فعل و انفعالات سیستم فایل ارائه شده توسط facade اسکیمای Storage تامین می کند.
لطفاً راهنمای ارتقا را بررسی کنید تا در مورد اطمینان از سازگاری برنامه خود با Flysystem 3.x آگاه شوید.
روشهای جدید تعریف Eloquent با عناوین Accessors و Mutators
بهبود یافته های Eloquent و mutators توسط Taylor Otwell ارائه شد.لاراول 9 راه جدیدی برای تعریف Accessors و Mutators با Eloquent ارائه کرده است. در نسخههای قبلی لاراول، تنها راه برای تعریف Accessors و Mutators ، تعریف متدهای مازاد در کامپوننت های Model بود (مانند زیر):
با این حال، در لاراول 9x میتوانید با استفاده از یک روش مجزا، یک Accessor و mutator را با تعریف کردن یک نوع بازگشتی بازگردانی کنید. مانند زیر:
این ویژگی لاراول 9 باعث کد نویسی سریعتر و خواناتر می گردد.
ویژگی Enum Eloquent Attribute Casting
ارسال Enum فقط برای PHP 8.1 و بالاتر در دسترس است.
Eloquent اکنون به شما این امکان را می دهد که مقادیر ویژگی خود را به enums PHP ارسال کنید. برای انجام این کار، میتوانید ویژگی و شمارهای را که میخواهید در آرایه ویژگی $casts مدل خود قرار دهید را مشخص کنید:
هنگامی که cast را روی Model خود تعریف کردید(هنگامی که با ویژگی تعامل می کنید) ویژگی مشخص شده به طور خودکار به یک enum فرستاده می شود و از آن خارج می شود:
این ویژگی های لاراول 9 باعث کد نویسی سریعتر و خواناتر می گردد. البته که دسترسی به لاراول 8.1 می خواهد.
ویژگی Implicit Route Bindings با Enum ها
Nuno Maduro در توسعه Implicit Enum bindings همکاری کرده است.PHP 8.1 پشتیبانی از Enums را اعلام کرد. لاراول 9 توانایی نوع Enum را در تعریف مسیر شما اعلام کرده است و لاراول تنها در صورتی مسیر را فراخوانی میکند که آن بخش مسیر یک مقدار Enum معتبر در URI باشد. در غیر این صورت، پاسخ HTTP 404 به طور خودکار برگردانده می شود. به عنوان مثال، با توجه به Enum زیر:
میتوانید مسیری را تعریف کنید که فقط در صورتی فراخوانی شود که بخش مسیر {category} میوهها (fruits) یا افراد(people) باشد. در غیر این صورت، یک پاسخ HTTP 404 برگردانده خواهد شد:
ویژگی Forced Scoping Of Route Bindings
Claudio Dekker در توسعه Forced scoped bindings همکاری کرده است.
در نسخههای قبلی لاراول، ممکن است بخواهید مدل دوم Eloquent را در یک تعریف مسیر قرار دهید به طوری که باید فرزند مدل Eloquent قبلی باشد. به عنوان مثال، این تعریف مسیر را در نظر بگیرید که یک پست وبلاگ را توسط اسلاگ برای یک کاربر خاص بازیابی می کند:
هنگام استفاده از یک اتصال ضمنی با کلید سفارشی به عنوان پارامتر مسیر تودرتو، لاراول به طور خودکار محدوده پرس و جو را برای بازیابی مدل تودرتو توسط والد خود با استفاده از قراردادها برای حدس زدن نام رابطه روی والد، بررسی می کند. با این حال، این رفتار قبلاً توسط لاراول پشتیبانی میشد که یک کلید سفارشی برای اتصال مسیر فرزند استفاده میشد.
با این حال، در لاراول 9 ، اکنون میتوانید به لاراول دستور دهید که محدوده اتصالات «کودک یا child» را حتی زمانی که یک کلید سفارشی ارائه نشده است، محدود کند. برای انجام این کار، می توانید در هنگام تعریف مسیر خود از متد scopeBindings استفاده کنید:
این ویژگی لاراول 9 باعث می شود دسته بندی مسیر ها راحت تر صورت گیرد.
ویژگی Controller Route Groups
Luke Downing در توسعه Route group همکاری کرده است.
اکنون میتوانید از متدهای controller برای تعریف کنترلر رایج برای همه مسیرهای درون گروه استفاده کنید. سپس، هنگام تعریف مسیرها، فقط باید متد کنترلری را که آنها فراخوانی می کنند ارائه دهید:
به این طریق مانند آموزش گروه بندی مسیر ها که در آموزش لاراول بررسی کردیم میتوانید ، گروه بندی را به یک کنترل خاص اختصاص دهید که باعث می شود تنها متد های آن کنترلر در دسترس باشند.
مانند زیر که متد های کنترلر سفارش در دسترس می باشد.
Full Text Indexes / Where Clauses
Taylor Otwell و Dries Vints در توسعه Full text indexes و عبارت “where” همکاری کرده است.
هنگام استفاده از MySQL یا PostgreSQL، متد fullText اکنون می تواند به تعریف های ستون در migration اضافه شود تا ایندکس گذاری متن کامل ایجاد شود:
این ویژگی های لاراول 9 باعث کد نویسی سریعتر، خواناتر و همچنین موجب سریعتر شدن کدنویسی می گردد.