امکانات جدید نسخه های laravel هر کدام نسبت به ورژن قبلی

امکانات جدید نسخه های laravel هر کدام نسبت به ورژن قبلی

امکانات جدید نسخه های لاراول 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  

پشتیبانی از جاب‌های متوالی (Job Batching): 

در لاراول 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;
 

به بود  قا بلیت  rate limiting :

در لاراول 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 سیستم مدیریت احراز  هویت مدرن :

Jetstream در لاراول 8 یک سیستم مدرن برای مدیریت احراز هویت و ویژگی‌های مرتبط است. این ابزار امکاناتی مانند ورود و ثبت‌نام، مدیریت جلسات، احراز هویت دو مرحله‌ای (2FA)، و بازیابی رمز عبور را فراهم می‌کند. Jetstream با دو فریم‌ورک Frontend (Livewire و Inertia.js) قابل استفاده است و تجربه کاربری روانی ارائه می‌دهد. این ابزار به توسعه‌دهندگان کمک می‌کند تا سریع‌تر سیستم‌های احراز هویت حرفه‌ای بسازند.

 

روتر کلاس‌بیس (Class-based Routing):

در لاراول 8، قابلیت روتر کلاس‌بیس (Class-based Routing) معرفی شده که امکان تعریف مسیرها به صورت مستقیم در متدهای کلاس کنترلر را فراهم می‌کند. به جای تعریف مسیرها در فایل web.php یا api.php، می‌توان از متدهای موجود در کنترلرها با تعریف بهینه استفاده کرد. این روش با استفاده از متد __invoke یا متدهای دیگر کنترلر ساده‌تر و خواناتر می‌شود. برای استفاده، تنها کافی است نام کنترلر و متد مربوطه را در مسیر تعریف کنید.

Route::get('/users', [UserController::class, 'index']);
 

 پوشه مدل‌ها:

در لاراول 8، ساختار پیش‌فرض پروژه تغییر کرده و مدل‌ها اکنون در پوشه‌ای به نام Models/ قرار می‌گیرند. این تغییر به منظور سازمان‌دهی بهتر و جدا کردن مدل‌ها از سایر فایل‌ها صورت گرفته است. در صورتی که بخواهید مدل‌ها در مسیر اصلی (ریشه) باقی بمانند، می‌توانید به صورت دستی مسیر را تنظیم کنید. این ساختار جدید، کد را خواناتر کرده و مدیریت مدل‌ها را در پروژه‌های بزرگ‌تر آسان‌تر می‌کند.

 

تغییرات مهم لاراول 9

 پشتیبانی از Full-Text Indexing:

در لاراول 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();
}
 
 
نویسنده :
مجید پورداود
  • مجید پورداود
  • مهندس نرم افزار و تحلیلگر ارشد سیستم های کامپیوتری تحت وب می باشم. از سال 1395 برنامه نویسی را شروع کردم و به زبان های php (فریم ورک laravel -codeigniter)  و زبان جاوا اسکریپت (فریم ورک express.js-nest.js)  تسلط دارم.  

ثبت دیدگاه جدید

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *