لاراول v9 نسخه LTS (پایدار) بعدی لاراول هستش که تا اوایل سال 2022 منتشر میشه. توی این پست میخوام به تمام ویژگی ها و تغییرات جدیدی که تا الان اعلام شده اشاره کنم.
تغییرات تاریخ انتشار لاراول 9
لاراول 9 قرار بود حدود سپتامبر (مرداد) امسال منتشر بشه، اما تیم لاراول تصمیم گرفت که این نسخه رو، ژانویه 2022 منتشر کنه:
لاراول از انواع پکیج های جامعه محور و همچنین 9 کامپوننت سیمفونی (Symfony) برای بعضی از ویژگی های خودش استفاده میکنه. سیمفونی ورژن 6 قراره که در ماه نوامبر (آبان) امسال منتشر بشه. به همین دلیل، تیم لاراول تصمیم گرفت که انتشار لاراول ورژن 9 رو تا ژانویه 2022 (دی ماه ۱۴۰۰) عقب بندازه.
با این تاخیر، میتونن اجزای اصلی سیمفونی موجود در لاراول رو به سیمفونی ورژن 6 ارتقا بدن. در غیر اینصورت، این ارتقا تا سپتامبر 2022 طول میکشه. علاوه بر این، برای انتشار نسخه های بعدی لاراول هم بهتر میشه. چون انتشارات سالانه لاراول همیشه دو ماه بعد از انتشار سیمفونی انجام میشه.
این تغییر روی نسخه های اصلی آینده هم اثر میزاره و اون هارو عقب میندازه. برنامه آینده مثل زیر میشه:
لاراول 9: ژانویه 2022 (دی ماه ۱۴۰۰)
لاراول 10: ژانویه 2023 (دی ماه ۱۴۰۱)
لاراول 11: ژانویه 2024 (دی ماه ۱۴۰۲)
PHP 8 حداقل نسخه در لاراول 9 است
از اونجایی که لاراول 9 به سیمفونی 6 نیاز داره و سیمفونی 6 حداقل به PHP ورژن 8 نیاز داره، پس ورژن جدید لاراول هم این شرط رو خواهد داشت. پس لاراول 9 نیاز به PHP ورژن 8 به بالا رو داره.
Stub مایگریشن های ناشناس
اوایل امسال بود که لاراول 8.37 با ویژگی جدیدی به اسم Anonymous Migrations معرفی شد. این ویژگی از برخورد یا تصادم نام کلاس های مایگریشن جلوگیری میکنه.
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
public function up()
{
Schema::table('people', function (Blueprint $table) {
$table->string('first_name')->nullable();
});
}
};
وقتی لاراول 9 راه اندازی بشه، موقع اجرای دستور php artisan make:migration
این حالت بصورت پیشفرض اجرا میشه.
رابط جدید سازنده کوئری
به لطف کریس مورل، ورژن بعدی لاراول دارای یک رابط یا اینترفیس سازنده کوئری (Query Builder) جدید هستش. برای مشاهده جزئیات بیشتر درباره این اتفاق میتونید درخواست این تغییر در گیت هاب رو مشاهده کنید.
برای توسعه دهنده هایی که برای تجزیه و آنالیز استاتیک، ریفکتور کردن یا تکمیل کد به ادیتورشون اطمینان دارن ، عدم وجود رابط مشترک یا وراثت بین Query\Builder ، Eloquent\Builder و Eloquent\Relation میتونه خیلی مشکل باشه:
return Model::query()
->whereNotExists(function($query) {
})
->whereHas('relation', function($query) {
})
->with('relation', function($query) {
});
این ویژگی، یه اینترفیس (interface) جدید Illuminate\Contracts\Database\QueryBuilder
و یه صفت (trait) Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder
رو اضافه میکنه. که رابط یا اینترفیس رو به جای اجرای __call
پیاده سازی میکنه.
توابع رشته ای PHP 8
از اونجایی که PHP ورژن 8 حداقل ورژن PHP خواهد بود، تام شلیک بر اساس یه درخواست به گیت هاب، توابع str_contains
، str_starts_with
و str_ends_with
رو به کلاس Illuminate\Support\Str
اضافه کرد.