تغییرات 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 کمک کردهاند، تشکر میکنیم.
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi