دسته بندی نشده
ویژگی های لاراول ۹

ویژگی های لاراول 9

لاراول 9 رسید و با خود ویژگی های جدید و تغییراتی ارائه کرده است. بد نیست در یک نگاه ویژگی های لاراول 9 را بررسی کنیم.

همانطور که میدانید، لاراول با انتشار لاراول 8 به نسخه های سالانه تبدیل شد. پیش از این، نسخه های اصلی هر 6 ماه یکبار منتشر می شد.

این انتقال به منظور کاهش بار تعمیر و نگهداری بر روی جامعه و به چالش کشیدن تیم توسعه استفاده از ویژگی‌های جدید و شگفت‌انگیز لاراول، بدون ایجاد تغییرات اساسی است. 

بنابراین، انجمن توسعه دهندگان لاراول انواع مختلفی از قابلیت های قوی را به لاراول 8  ارائه نمودند که سازگاری با نسخه های قدیمی را شکسته است، مانند پشتیبانی از آزمایش موازی (parallel testing support)، بسته های بهبود یافته ی آغازگر Breeze (در آموزش لاراول به شیوه های مختلف نصب آن اشاره کرده ایم)، بهبودهای کلاینت HTTP، و حتی انواع جدید ارتباط Eloquent مانند “یکی از چندین (has one of many)” را دارد.

بنابراین، این تعهد به ارسال ویژگی‌های جدید عالی در طول نسخه فعلی احتمالاً منجر به این خواهد شد که نسخه‌های «مهم» آینده عمدتاً برای کارهای «نگهداری» مانند ارتقاء وابستگی‌های بالادستی مورد استفاده قرار گیرند، که در این یادداشت‌های انتشار قابل مشاهده است.

لاراول 9 با ارائه پشتیبانی از اجزای زیر تغییراتی در لاراول 8 ارائه نموده است.

  1. Symfony 6.0
  2. Symfony Mailer
  3. Flysystem 3.0
  4. لیست route:list بهبودیافته
  5. درایور پایگاه داده لاراول Scout
  6. نحو (syntax) جدید Eloquent Accessor/mutator
  7. اتصالات ضمنی مسیر (implicit route bindings via Enums)

لاراول 9 به حداقل نسخه PHP 8.0 نیاز دارد.

Symfony Mailer

حمایت از سیمفونی Mailer توسط افراد زیر انجام شد.

  1. Dries Vints
  2. James Brooks
  3.  Julius Kiekbusch

نسخه‌های قبلی لاراول از کتابخانه 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 بود (مانند زیر):

روشهای جدید تعریف Eloquent با عناوین Accessors  و Mutators
روشهای جدید تعریف Eloquent با عناوین Accessors و Mutators

با این حال، در لاراول 9x می‌توانید با استفاده از یک روش مجزا، یک Accessor و mutator را با تعریف کردن یک نوع بازگشتی بازگردانی کنید. مانند زیر:

روشهای جدید تعریف Eloquent با عناوین Accessors  و Mutators
روشهای جدید تعریف Eloquent با عناوین Accessors  و Mutators

این ویژگی لاراول 9 باعث کد نویسی سریعتر و خواناتر می گردد.

ویژگی Enum Eloquent Attribute Casting

ارسال Enum فقط برای PHP 8.1 و بالاتر در دسترس است.

محمد سعید در توسعه Enum همکاری کرده است.

Eloquent اکنون به شما این امکان را می دهد که مقادیر ویژگی خود را به enums PHP ارسال کنید. برای انجام این کار، می‌توانید ویژگی و شماره‌ای را که می‌خواهید در آرایه ویژگی $casts مدل خود قرار دهید را مشخص کنید:

ویژگی Enum Eloquent Attribute Casting
ویژگی Enum Eloquent Attribute Casting

هنگامی که cast را روی Model خود تعریف کردید(هنگامی که با ویژگی تعامل می کنید) ویژگی مشخص شده به طور خودکار به یک enum فرستاده می شود و از آن خارج می شود:

ویژگی Enum Eloquent Attribute Casting
ویژگی Enum Eloquent Attribute Casting

این ویژگی های لاراول 9 باعث کد نویسی سریعتر و خواناتر می گردد. البته که دسترسی به لاراول 8.1 می خواهد.

ویژگی Implicit Route Bindings با Enum ها

Nuno Maduro در توسعه Implicit Enum bindings همکاری کرده است.PHP 8.1 پشتیبانی از Enums را اعلام کرد. لاراول 9 توانایی نوع Enum را در تعریف مسیر شما اعلام کرده است و لاراول تنها در صورتی مسیر را فراخوانی می‌کند که آن بخش مسیر یک مقدار Enum معتبر در URI باشد. در غیر این صورت، پاسخ HTTP 404 به طور خودکار برگردانده می شود. به عنوان مثال، با توجه به Enum زیر:

ویژگی Implicit Route Bindings با Enum ها
ویژگی Implicit Route Bindings با Enum ها

می‌توانید مسیری را تعریف کنید که فقط در صورتی فراخوانی شود که بخش مسیر {category} میوه‌ها (fruits) یا افراد(people) باشد. در غیر این صورت، یک پاسخ HTTP 404 برگردانده خواهد شد:

ویژگی Implicit Route Bindings با Enum ها
ویژگی Implicit Route Bindings با Enum ها

ویژگی Forced Scoping Of Route Bindings

Claudio Dekker در توسعه Forced scoped bindings همکاری کرده است.

در نسخه‌های قبلی لاراول، ممکن است بخواهید مدل دوم Eloquent را در یک تعریف مسیر قرار دهید به طوری که باید فرزند مدل Eloquent قبلی باشد. به عنوان مثال، این تعریف مسیر را در نظر بگیرید که یک پست وبلاگ را توسط اسلاگ برای یک کاربر خاص بازیابی می کند:

ویژگی Forced Scoping Of Route Bindings
ویژگی Forced Scoping Of Route Bindings

هنگام استفاده از یک اتصال ضمنی با کلید سفارشی به عنوان پارامتر مسیر تودرتو، لاراول به طور خودکار محدوده پرس و جو را برای بازیابی مدل تودرتو توسط والد خود با استفاده از قراردادها برای حدس زدن نام رابطه روی والد، بررسی می کند. با این حال، این رفتار قبلاً توسط لاراول پشتیبانی می‌شد که یک کلید سفارشی برای اتصال مسیر فرزند استفاده می‌شد.

با این حال، در لاراول 9 ، اکنون می‌توانید به لاراول دستور دهید که محدوده اتصالات «کودک یا child» را حتی زمانی که یک کلید سفارشی ارائه نشده است، محدود کند. برای انجام این کار، می توانید در هنگام تعریف مسیر خود از متد scopeBindings استفاده کنید:

ویژگی Forced Scoping Of Route Bindings
ویژگی Forced Scoping Of Route Bindings
ویژگی Forced Scoping Of Route Bindings
ویژگی Forced Scoping Of Route Bindings

این ویژگی لاراول 9 باعث می شود دسته بندی مسیر ها راحت تر صورت گیرد.

ویژگی Controller Route Groups

Luke Downing در توسعه Route group همکاری کرده است.

اکنون می‌توانید از متدهای controller برای تعریف کنترلر رایج برای همه مسیرهای درون گروه استفاده کنید. سپس، هنگام تعریف مسیرها، فقط باید متد کنترلری را که آنها فراخوانی می کنند ارائه دهید:

به این طریق مانند آموزش گروه بندی مسیر ها که در آموزش لاراول بررسی کردیم میتوانید ، گروه بندی را به یک کنترل خاص اختصاص دهید که باعث می شود تنها متد های آن کنترلر در دسترس باشند.

مانند زیر که متد های کنترلر سفارش در دسترس می باشد.

ویژگی Controller Route Groups
ویژگی Controller Route Groups

Full Text Indexes / Where Clauses

Taylor Otwell و Dries Vints در توسعه Full text indexes و عبارت “where” همکاری کرده است.

هنگام استفاده از MySQL یا PostgreSQL، متد  fullText اکنون می تواند به تعریف های ستون در migration اضافه شود تا ایندکس گذاری متن کامل ایجاد شود:

این ویژگی های لاراول 9 باعث کد نویسی سریعتر، خواناتر و همچنین موجب سریعتر شدن کدنویسی می گردد.

Author

خسرو نظری

دانش آموخته کارشناسی ارشد فناوری اطلاعات (گرایش طراحی و تولید نرم افزار)، توسعه دهنده وب، مدیرپروژه های نرم افزاری، مدیرسیستم (sysadmin) لینوکس، مشاور مانیتورینگ و مدیر مجموعه تحلیل یار

Leave a comment

نشانی ایمیل شما منتشر نخواهد شد.