انتشار لاراول ۱۰ باعث شد تا امروز با هیجان به بررسی تمام ویژگی ها و تغییرات لاراول ۱۰ بپردازیم.
دوشنبه ۲۴ بهمن ماه ۱۴۰۱ آقای «تیلور اوتول» سازنده لاراول در پستی در وبلاگ لاراول و همچنین سهشنبه ۲۵ بهمن سایت لاراول نیوز در اعلام کرد که «لاراول ۱۰ منتشر شده است.»
برای بررسی سریعتر و راحتتر تغییرات لاراول ۱۰ همچنین یک ویدیو ۹ دقیقهای تقدیم به شما عزیزان میکنیم که خیلی سریع تغییرات لاراول ۱۰ را برای شما توضیح خواهد داد.
پیشنیاز لاراول ۱۰
برای نصب و راهاندازی لاراول ۱۰ حداقل به PHP نسخه ۸.۱ نیاز دارید.
Method Signature + Return Types
در نسخههای قبلی، لاراول از تمام ویژگی های Type Decelrations که از نسخه پی اچ پی ۷.۱ به پی اچ پی اضافه شده، پشتیبانی کرده است. با این حال، در پی اچ پی نسخه ۸ شاهد تغییرات بسیار زیادی در این خصوص بوده ایم مثل اضافه شدن unition types, DNF types, object, iterable و … که در لاراول ۱۰ آخرین تغییرات PHP در خصوص موارد گفته شده، اضافه شده است.
تغییرات Type declarations از PHP 7.1
لاراول ۱۰ با بروزرسانی کامل Sekelton از آخرین تغییرات type-hinting در PHP پشتیبانی خواهد کرد. این تغییرات کاملاً با نسخههای قبلی سازگار (backwards-compatible) است. بنابراین، برنامه های موجود که این ype-hinting را ندارند به طور عادی و بدون هیچ مشکلی به کار خود ادامه می دهند.
Type-hinting چیست؟
با توجه اینکه در لاراول ۱۰ خیلی به type-hinting اشاره شد لازم است در این خصوص توضیح دهیم. از PHP 5 می توانید از type-hinting برای تعیین نوع داده مورد انتظار یک آرگومان در حین تعریف یک تابع استفاده کنید. هنگامی که تابع را فراخوانی می کنید، پیاچپی بررسی می کند که آیا آرگومانها از نوع مشخص شده هستند یا خیر؟ در غیر این صورت، زمان اجرا با خطا مواجه می شود و اجرا متوقف می شود. به مثال زیر توجه کنید:
<?php class Book{ public $price; public function price($gheymat){ $this->price = $gheymat; } } $ketab = new Book; $ketab->price('abc'); echo $ketab->price;
همانطور که میبینید قیمتی که به کتاب داده شده است از نوع استرینگ (abc) میباشد. لذا پیاچپی بدون هیچ مشکلی این برنامه را اجرا میکند. اما برای جلوگیری از خطا و همچنین طبق اصول پیشنهادی بهتر است که نوع داده را مشخص کنیم. پس با تغییر به کد زیر ما با استفاده از type-hinting به جلوگیری از اشتباه در برنامه نویسی کمک کردهایم.
<?php class Book{ public $price; public function price(int $gheymat){ $this->price = $gheymat; } } $ketab = new Book; $ketab->price('abc'); echo $ketab->price;
همانطور که میبینید با اضافه کردن نوع داده int ما به برنامه اعلام کردهایم که قیمت فقط باید از نوع داده عددی باشد و هر نوع دادهای غیر از این را قبول نکن.
Processes
لاراول ۱۰ یک لایه انتزاعی (abstract layer) زیبا برای شروع و تعامل با Processes (در ادامه آن را پردازشها معنا میکنیم)، معرفی کرده است. برخی از ویژگیهای لایه پردازش شامل موارد زیر است:
- روش های فرآیند روان برای ساختن نمونه فرآیند قبل از اجرای آن
- امکان پردازش خروجی به محض اجرای پردازش
- امکان اجرای پردازشها به صورت ناهمزمان (Asynchronous)
- Process Pools
- ویژگی های تستنویسی از طریق fake()
- جلوگیری از سرگردانی پردازشها در طول تستنویسی
همانطور که متوجه شدید با انتشار نسخه لاراول ۱۰، فرآیندهای تستنویسی هرگز اینقدر آسان نبوده است.
use Illuminate\Support\Facades\Process; $result = Process::run('ls -la'); $result->successful(); $result->failed(); $result->exitCode(); $result->output(); $result->errorOutput(); $result->throw(); $result->throwIf($condition);
فرآیندها حتی امکان اجرا توسط Pool ها را دارند که امکان اجرای راحت و مدیریت فرآیندهای همزمان (Asynchronous) را فراهم می کند:
use Illuminate\Process\Pool; use Illuminate\Support\Facades\Pool; [$first, $second, $third] = Process::concurrently(function (Pool $pool) { $pool->command('cat first.txt'); $pool->command('cat second.txt'); $pool->command('cat third.txt'); }); return $first->output();
همچنین برای کنترل تستنویسی امکان استفاده از fake() در کنار پردازشها وجود دارد. به مثال زیر توجه کنید:
Process::fake([ 'cat *' => Process::result( output: 'Test "cat" output', ), 'ls *' => Process::result( output: 'Test "ls" output', ), ]);
ضمنا اگر نیازی به سفارشی کردن خروجی خطای یک پردازش fake() ندارید، ممکن است بخواهید نتایج fake() را بهعنوان رشتههای ساده مشخص کنید
Process::fake([ 'cat *' => 'Test "cat" output', 'ls *' => 'Test "ls" output', ]);
برای اطلاعات بیشتر در مورد تعامل با Process ها، لطفاً به مستندات فرآیند جامع مراجعه کنید.
پردازشها یا Processes در لاراول ۱۰
Str::password
حالا با لاراول ۱۰ میتوانید از Str::password استفاده کرده و به راحتی رمزعبورهای تصادفی و فوقالعاده قوی تولید کنید. باید خاطرنشان کنیم که پسوردهای تولید شده شامل عدد، حروف خاص، حروف الفا و فاصله هستند. طول پسوردها بصورت پیشفرض ۳۲ کارکتر است.
use Illuminate\Support\Str; $password = Str::password(); // 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4' $password = Str::password(12); // 'qwuar>#V|i]N'
حذفیات لاراول ۱۰
در لاراول ۱۰ متدهای زیر حذف شدند:
- متد منسوخ شده
Route::home
در پول ریکوئست #۴۲۶۱۴ حذف شد. - متد منسوخ شده
$dates
در پول ریکوئست #۴۲۵۷۸ حذف شد. - متد منسوخ شده
dispatchNow
در پول ریکوئست #۴۲۵۹۱ حذف شد. - متد منسوخ شده
assertTimesSent
در پول ریکوئست #۴۲۵۹۲ حذف شد.
پشتیبانی لاراول ۱۰
همانطور که در سایت رسمی لاراول نیز اشاره شده است، برای تمامی نسخههای لاراول،بروزرسانی جهت «رفع باگ» به مدت ۱۸ ماه و «برورزسانی امنیتی» به مدت ۲ سال ارائه میشود. برای همه کتابخانههای اضافی، از جمله «لومن»، فقط آخرین نسخه اصلی رفع اشکال را دریافت میکند. علاوه بر این، لطفا نسخه های پایگاه داده را بررسی کنید.
نسخه لاراول | نسخه PHP | تاریخ انتشار | رفع باگ | بروزرسانی امنیتی |
---|---|---|---|---|
۸ | ۷٫۳ − ۸٫۱ | سپتامبر ۲۰۲۰ | جولای ۲۰۲۲ | ژانویه ۲۰۲۳ |
۹ | ۸٫۰ − ۸٫۲ | فوریه ۲۰۲۲ | آگوست ۲۰۲۳ | فوریه ۲۰۲۴ |
۱۰ | ۸٫۱ − ۸٫۲ | سه ماهه اول ۲۰۲۳ | آگوست ۲۰۲۴ | فوریه ۲۰۲۵ |
۱۱ | ۸٫۲ | سه ماهه اول ۲۰۲۴ | آگوست ۲۰۲۵ | فوریه ۲۰۲۶ |
همانطور که در جدول بالا نیز مشاهده میکنید لاراول نسخه ۸ از این به بعد پشتیبانی نخواهد شد و هیچ بروزرسانی دریافت نخواهد کرد لذا اگر از لاراول نسخه ۸ استفاده میکنید آن را به نسخههای بالاتر ارتقا دهید.