-
آموزش laravel
-
1404-04-07
-
903
-
0
امکانات جدید نسخه های لاراول Laravel هر کدام نسبت به ورژن قبلی
برنامه انتشار لاراول
تیم اصلی لاراول سالانه دو نسخه اصلی را منتشر میکرد - هر شش ماه یکی.
با این حال، زمانی که Taylor Otwell ، خالق لاراول، اعلام کرد که اکنون هر سال یک نسخه اصلی منتشر خواهد شد، چرخه انتشار تغییر کرد. این امر به تیم اصلی و جامعه امکان را داد تا زمان و تلاش بیشتری را به نسخه خاصی از framework اختصاص دهند و ویژگی های قدرتمند جدیدی را بدون ایجاد تغییرات اساسی معرفی کنند.
علاوه بر این، طبق سیاست پشتیبانی، رفع باگ ها به مدت 18 ماه و به روز رسانی های امنیتی به مدت دو سال برای تمامی نسخه های لاراول ارائه می شود.
Version |
PHP (*) |
Release |
Bug Fixes Until |
Security Fixes Until |
8 |
7.3 - 8.1 |
September 8th, 2020 |
July 26th, 2022 |
January 24th, 2023 |
9 |
8.0 - 8.2 |
February 8th, 2022 |
August 8th, 2023 |
February 6th, 2024 |
10 | 8.1 - 8. 3 | February 14th, 2023 | August 6th, 2024 | February 4th, 2025 |
11 | 8.2 - 8.4 | March 12th, 2024 | September 3rd, 2025 | March 12th, 2026 |
12 | 8.2 - 8.4 | February 24th, 2025 | August 13th, 2026 | February 24th, 2027 |
13 | 8.3 - 8.4 | Q1 2026 | Q3 2027 | Q1 2028 |
در لاراول 8، پشتیبانی از جابهای متوالی (chained jobs) امکان اجرای چند جاب به صورت متوالی را فراهم میکند. این قابلیت از طریق متد chain
قابل دسترسی است که به شما اجازه میدهد چند جاب را به ترتیب اجرا کنید. در صورتی که یکی از جابها شکست بخورد، جابهای بعدی اجرا نمیشوند. این ویژگی با استفاده از queues مدیریت شده و برای کارهایی که وابستگی متوالی دارند، بسیار مفید است.
use App\Jobs\ProcessPodcast;
use App\Models\Podcast;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
use Throwable;
$batch = Bus::batch([
new ProcessPodcast(Podcast::find(1)),
new ProcessPodcast(Podcast::find(2)),
new ProcessPodcast(Podcast::find(3)),
new ProcessPodcast(Podcast::find(4)),
new ProcessPodcast(Podcast::find(5)),
])->then(function (Batch $batch) {
// All jobs completed successfully...
})->catch(function (Batch $batch, Throwable $e) {
// First batch job failure detected...
})->finally(function (Batch $batch) {
// The batch has finished executing...
})->dispatch();
return $batch->id;
در لاراول 8، قابلیت Rate Limiting با استفاده از کلاس RateLimiter
بهبود یافته و امکان تعریف قوانین دقیقتر برای مدیریت درخواستها فراهم شده است. اکنون میتوان محدودیتها را بر اساس کاربران، IP، یا ویژگیهای خاص درخواست سفارشیسازی کرد. این قابلیت از متدهای پیشرفتهای مانند perMinute
و by
برای تنظیم تعداد درخواستها در بازههای زمانی مشخص استفاده میکند. همچنین امکان ارائه پاسخهای دلخواه در صورت عبور از محدودیت فراهم شده است.
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('api', function ($request) {
return Limit::perMinute(60)->by($request->ip());
});
Jetstream در لاراول 8 یک سیستم مدرن برای مدیریت احراز هویت و ویژگیهای مرتبط است. این ابزار امکاناتی مانند ورود و ثبتنام، مدیریت جلسات، احراز هویت دو مرحلهای (2FA)، و بازیابی رمز عبور را فراهم میکند. Jetstream با دو فریمورک Frontend (Livewire و Inertia.js) قابل استفاده است و تجربه کاربری روانی ارائه میدهد. این ابزار به توسعهدهندگان کمک میکند تا سریعتر سیستمهای احراز هویت حرفهای بسازند.
در لاراول 8، قابلیت روتر کلاسبیس (Class-based Routing) معرفی شده که امکان تعریف مسیرها به صورت مستقیم در متدهای کلاس کنترلر را فراهم میکند. به جای تعریف مسیرها در فایل web.php
یا api.php
، میتوان از متدهای موجود در کنترلرها با تعریف بهینه استفاده کرد. این روش با استفاده از متد __invoke
یا متدهای دیگر کنترلر سادهتر و خواناتر میشود. برای استفاده، تنها کافی است نام کنترلر و متد مربوطه را در مسیر تعریف کنید.
Route::get('/users', [UserController::class, 'index']);
در لاراول 8، ساختار پیشفرض پروژه تغییر کرده و مدلها اکنون در پوشهای به نام Models/ قرار میگیرند. این تغییر به منظور سازماندهی بهتر و جدا کردن مدلها از سایر فایلها صورت گرفته است. در صورتی که بخواهید مدلها در مسیر اصلی (ریشه) باقی بمانند، میتوانید به صورت دستی مسیر را تنظیم کنید. این ساختار جدید، کد را خواناتر کرده و مدیریت مدلها را در پروژههای بزرگتر آسانتر میکند.
در لاراول 9، Full-Text Indexing برای جستجوهای متنی در پایگاه دادههایی مانند MySQL و PostgreSQL پشتیبانی میشود. این قابلیت امکان جستجوی سریعتر و کارآمدتر در ستونهای متنی را فراهم میکند. برای تعریف، میتوانید از متد fulltext()
در مایگریشنها استفاده کنید و سپس جستجو را با متد whereFullText
انجام دهید.
Schema::table('posts', function (Blueprint $table) {
$table->text('content')->fulltext();
});
$results = DB::table('posts')->whereFullText('content', 'Laravel 9')->get();
تایپدهی قویتر در Query Builder
در لاراول 9، تایپدهی قویتری برای متدهای Query Builder معرفی شده است. این ویژگی باعث میشود که IDEها خطاهای احتمالی را بهتر شناسایی کرده و قابلیتهای تکمیل خودکار (auto-complete) بهبود یابد. تایپدهی قویتر، توسعهدهندگان را به نوشتن کدی ایمنتر و بدون خطا تشویق میکند.
$users = DB::table('users')->where('active', 1)->get(); // اکنون تایپدهی شده است.
Improved Eloquent Accessors / Mutators
در لاراول 9، Accessors و Mutators با کلاس جدید Attribute
سادهتر و خواناتر شدهاند. بهجای تعریف متدهای جداگانه get
و set
، میتوانید از یک متد واحد با کلاس Attribute
استفاده کنید. این روش از Closureها برای تعریف منطق خواندن (getter) و نوشتن (setter) بهره میبرد و با تایپدهی دقیقتر ترکیب شده است.
public function name(): Attribute {
return Attribute::make(
get: fn($value) => ucfirst($value),
set: fn($value) => strtolower($value)
);
}
Bootstrap 5 Pagination Views
در لاراول 9، صفحهبندی (Pagination) بهطور پیشفرض از Bootstrap 5 پشتیبانی میکند. کلاسها و ساختار HTML مطابق استانداردهای Bootstrap 5 بهروزرسانی شدهاند و طراحی واکنشگرا و مدرنتری ارائه میدهند. برای فعالسازی، میتوانید از متد Paginator::useBootstrapFive()
در فایل AppServiceProvider استفاده کنید. همچنین میتوانید لینکهای صفحهبندی را با دستور ساده {{ $items->links() }}
در Blade نمایش دهید.
use Illuminate\Pagination\Paginator;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Paginator::useBootstrapFive();
}
ثبت دیدگاه جدید
0 دیدگاه
نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *