تغییرات Laravel 8
۸ آبان ۱۳۹۹
با انتشار Laravel 8 بسیاری از ویژگیها از جمله:
- jetstream
- models directory
- model factory classes
- migration squashing
- rate-limiting improvements
- time testing helpers
- dynamic blade components
- و …
به این فریمورک اضاف شدهاند و شما میتوانید از آنها در برنامههای Laravel خود استفاده کنید. درحال حاضر تیم توسعه Laravel هر ۶ ماه یک نسخه جدید را منتشر میکند و شما میتوانید روند انتشار نسخههای جدید این فریمورک را در این لینک مشاهده کنید.
Laravel Jetstream
با استفاده از Laravel Jetstream در Laravel UI scaffolding موجود در نسخههای قبل بهبودهایی بهوجود خواهد آمد. این یک نقطه شروع برای پروژههای جدید از جمله login، registration، email verification، two-factor authentication، session management، API پشتیبانی Laravel و team management.
Models Directory
در نسخه جدید، ما شاهد مسیر app/Models
در اسکلت برنامه Laravel خود خواهیم بود و به این صورت تمام دستورهای generator فرض میکنند که modelها در مسیر app/Models
وجود دارند. البته اگر این دایرکتوری وجود نداشته باشد، فریمورک فرض را بر این میگذارد که modelهای موجود در برنامه درون پوشه app/
نگهداری میشوند.
Model Factory Classes
Eloquent model factoryها در نسخه Laravel 8 با پشتیبانی بهبود یافته از روابط بین factoryها مبتنی بر class هستند. کدهای زیر، سینتکس جدید و بهبود یافته factoryها است که برای تولید رکوردهای جدید میتوانید از آنها استفاده کنید:
use App\Models\User;
User::factory()->count(50)->create();
// using a model state "suspended" defined within the factory class
User::factory()->count(5)->suspended()->create();
Migration Squashing
اگر برنامه شما حاوی فایلهای migration زیادی باشد، میتوانید با استفاده از Squash آنها را به یک فایل SQL تبدیل میکند. این فایل ابتدا هنگام اجرای migrationها اجرا میشود و به دنبال آن فایلهای دیگری که migration آنها انجام نشده و بخشی از فایل squashed schema نیستند، اجرا میشوند. شما با Squash کردن migrationهای موجود میتوانید فایلهای migration را کاهش دهید و بدین صورت عملکرد برنامه در هنگام اجرای تستها افزایش مییابد.
بهبود Rate Limiting
Laravel 8 ضمن پشتیبانی از سازگاری با نسخههای قبلی throttle middleware و ارائه انعطافپذیری بیشتر، باعث بهبود عملکرد Rate Limiting شده است و شما با استفاده از کدهای زیر میتوانید Rate Limiterها را در Laravel 8 تعریف کنید.
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000);
});
همانطور که مشاهده میکنید با استفاده از متد for()
میتوانید کنترل درخواستهای HTTP را به صورت پویا در اختیار خودتان بگیرید.
Time Testing Helpers
کاربران Laravel با استفاده از کتابخانه Carbon PHP، از کنترل کامل تغییر زمان برخوردار بودهاند. اما Laravel با ارائه test helperها که میتوانید توسط آن زمان برنامه آزمایشی خود را تغییر دهید، یک قدم به آینده نزدیکتر شده است:
// Travel into the future...
$this->travel(5)->milliseconds();
$this->travel(5)->seconds();
$this->travel(5)->minutes();
$this->travel(5)->hours();
$this->travel(5)->days();
$this->travel(5)->weeks();
$this->travel(5)->years();
// Travel into the past...
$this->travel(-5)->hours();
// Travel to an exact time...
$this->travelTo(now()->subHours(6));
// Return back to the present time...
$this->travelBack();
هنگام استفاده از این متد، زمان بین هر تست مجددا تنظیم میشود.
Dynamic Blade Components
گاهی اوقات لازم است شما یک کامپوننت Blade را در runtime به صورت پویا رندر کنید. حال با Laravel 8 میتوانید برای ارائه کامپوننتهای پویا از <x-dynamic-component/>
استفاده کنید.
<x-dynamic-component :component="$componentName" class="mt-4" />
کسب اطلاعات بیشتر از Laravel 8
اینها برخی از ویژگیهای برجسته و جدید در Laravel 8 بودند و برای دیدن لیست کامل تغییرات میتوانید به Laravel 8 release notes و upgrade guide مراجعه کنید. البته اگر به دنبال راهی آسان برای بهروزرسانی برنامهتان هستید، Laravel Shift را فراموش نکنید.
مانند همه نسخههای منتشر شده، شرکت در توسعه Laravel برای همهگان ممکن است و از تمام کسانی که تا به حال در توسعه و استفاده از فریمورک Laravel کمک کردهاند، تشکر میکنیم.