تاریخچه نسخههای لاراول: از لاراول ۱ تا لاراول ۱۳
فهرست مطالب
- تاریخچه نسخههای لاراول: از لاراول ۱ تا لاراول ۱۳
- مقدمه: تولد یک فریمورک انقلابی
- لاراول ۱ (ژوئن ۲۰۱۱): اولین گامها
- لاراول ۲ (سپتامبر ۲۰۱۱): تکمیل معماری MVC
- لاراول ۳ (فوریه ۲۰۱۲): ظهور Artisan و مهاجرتها
- لاراول ۴ (می ۲۰۱۳): بازنویسی عظیم با Composer
- لاراول ۵ (فوریه ۲۰۱۵): عصر جدید ساختار دایرکتوری
- لاراول ۶ (سپتامبر ۲۰۱۹): ورود به Semantic Versioning
- لاراول ۷ (مارس ۲۰۲۰): Sanctum و Blade Components
- لاراول ۸ (سپتامبر ۲۰۲۰): Jetstream و کلاسهای Factory
- لاراول ۹ (فوریه ۲۰۲۲): مهاجرت به PHP 8
- لاراول ۱۰ (فوریه ۲۰۲۳): تثبیت و پالایش
- لاراول ۱۱ (مارس ۲۰۲۴): حذف Kernel و سادهسازی
- لاراول ۱۲ (فوریه ۲۰۲۵): مسیر به سوی هوش مصنوعی
- لاراول ۱۳ (مارس ۲۰۲۶): جهش به عصر هوش مصنوعی
- جدول خلاصه پشتیبانی و الزامات نسخهها
- منابع تکمیلی و لینکهای مفید
مقدمه: تولد یک فریمورک انقلابی
لاراول (Laravel) یک فریمورک متنباز PHP است که تحت مجوز MIT منتشر شده و توسط تیلور اوتول (Taylor Otwell)، توسعهدهنده آمریکایی که پیشتر در مایکروسافت روی داتنت کار میکرد، خلق شده است . اولین نسخه بتای لاراول در ۹ ژوئن ۲۰۱۱ منتشر شد و نسخه ۱ رسمی در اواخر همان ماه در دسترس قرار گرفت .
فلسفه اصلی تیلور اوتول از خلق لاراول، ارائه یک جایگزین پیشرفتهتر و گویاتر (Expressive) برای CodeIgniter بود – فریمورکی که در آن زمان بسیار محبوب بود اما ویژگیهای حیاتی مانند سیستم احراز هویت (Authentication) داخلی و مسیریابی (Routing) پیشرفته را پشتیبانی نمیکرد .
شعار همیشگی لاراول: "The PHP Framework for Web Artisans" – فریمورک PHP برای هنرمندان وب. این شعار نشاندهنده تمرکز لاراول بر زیبایی کد، خوانایی، و تجربه لذتبخش توسعهدهندگی است.
امروزه لاراول به محبوبترین فریمورک PHP تبدیل شده و رکورد بیشترین تعداد ستاره در گیتهاب را در میان فریمورکهای بکاند PHP، Ruby و Python در اختیار دارد . این موفقیت مرهون جامعه فعال، اکوسیستم غنی پکیجها، و انتشار منظم نسخههای جدید (تقریباً هر ۱۲ ماه یک نسخه اصلی) است.
لاراول ۱ (ژوئن ۲۰۱۱): اولین گامها
نسخه PHP موردنیاز: اطلاعات دقیق در دسترس نیست تاریخ انتشار: ژوئن ۲۰۱۱ وضعیت: پایان عمر (End of Life)
اولین نسخه لاراول با مجموعهای از ویژگیهای پایه اما ضروری متولد شد:
- سیستم احراز هویت (Authentication) داخلی – مهمترین مزیت رقابتی نسبت به CodeIgniter
- مسیریابی (Routing)
- مدلها (Models)
- نماها (Views)
- سیستم Session Management
- بومیسازی (Localization)
- مهاجرتهای پایگاه داده (Migrations) – هرچند بسیار ابتدایی نسبت به امروز
نکته جالب توجه: لاراول ۱ علیرغم داشتن Model و View، کنترلر (Controller) نداشت و به همین دلیل از نظر فنی یک فریمورک کامل MVC محسوب نمیشد . همچنین خبری از Composer نبود – مدیر بستهای که بعدها انقلابی در اکوسیستم PHP ایجاد کرد .
لاراول ۲ (سپتامبر ۲۰۱۱): تکمیل معماری MVC
نسخه PHP موردنیاز: اطلاعات دقیق در دسترس نیست تاریخ انتشار: سپتامبر ۲۰۱۱ وضعیت: پایان عمر (End of Life)
تنها سه ماه پس از نسخه اول، لاراول ۲ با بهبودهای قابل توجهی از راه رسید :
- اضافه شدن کنترلرها (Controllers) – لاراول را به یک فریمورک کامل MVC تبدیل کرد
- معرفی موتور قالبسازی Blade – سیستم Templating اختصاصی لاراول
- پیادهسازی IoC Container – کانتینر وارونگی کنترل (Inversion of Control) برای مدیریت وابستگیها
- پشتیبانی از رابطههای مدل (Model Relationships)
تغییر بحثبرانگیز: پشتیبانی از پکیجهای شخص ثالث (Third-party Packages) در این نسخه حذف شد . این تصمیم بعداً با معرفی Composer در لاراول ۴ به شکل کاملاً متفاوتی جبران شد.
لاراول ۳ (فوریه ۲۰۱۲): ظهور Artisan و مهاجرتها
نسخه PHP موردنیاز: اطلاعات دقیق در دسترس نیست تاریخ انتشار: فوریه ۲۰۱۲ وضعیت: پایان عمر (End of Life)
لاراول ۳ نقطه عطفی در محبوبیت این فریمورک بود. ویژگیهای جدید این نسخه شامل :
- معرفی Artisan CLI – رابط خط فرمان اختصاصی لاراول (الهامگرفته از
railsدر Ruby on Rails) - سیستم مهاجرت پایگاه داده (Database Migrations) به شکل مدرنتر – کنترل نسخه برای اسکیمای دیتابیس
- سیستم بستههای modular به نام Bundles
- پشتیبانی از پایگاههای داده بیشتر از جمله SQL Server
- سیستم رویدادها (Events)
- واحد تست (Unit Testing)
- Blade Template Engine با قابلیتهای پیشرفتهتر
افزایش چشمگیر محبوبیت: انتشار لاراول ۳ همزمان با رشد قابل توجه جامعه کاربری و محبوبیت این فریمورک بود .
لاراول ۴ (می ۲۰۱۳): بازنویسی عظیم با Composer
نسخه PHP موردنیاز: ۵.۳ و بالاتر تاریخ انتشار: می ۲۰۱۳ (بازنویسی کامل با اسم رمز Illuminate) وضعیت: پایان عمر (End of Life)
لاراول ۴ یک بازنویسی کامل از صفر بود و ساختار فریمورک را به مجموعهای از پکیجهای مجزا تبدیل کرد که از طریق Composer توزیع میشدند . این تغییر بنیادین، قابلیت گسترشپذیری لاراول را به شدت افزایش داد.
نوآوریهای کلیدی لاراول ۴:
- مهاجرت کامل به Composer به عنوان مدیر وابستگیها
- استفاده از کامپوننتهای Symfony – پایهای که تا امروز باقی مانده است (لاراول از ۹ کامپوننت Symfony استفاده میکند)
- الگوی Facade – واسطی ساده و خوانا برای دسترسی به سرویسهای IoC Container
- Database Seeding – پر کردن اولیه دیتابیس با دادههای پیشفرض
- سیستم صف (Queue) برای پردازش غیرهمزمان وظایف
- سیستم ارسال ایمیل (Mail)
- حذف نرم (Soft Deletion) – حذف منطقی رکوردها بدون پاک شدن فیزیکی
- برنامه انتشار منظم – هر ۶ ماه یک نسخه minor جدید
لاراول ۵ (فوریه ۲۰۱۵): عصر جدید ساختار دایرکتوری
نسخه PHP موردنیاز: ۵.۴ و بالاتر (نسخههای بعدی تا ۷.۰ افزایش یافت) تاریخ انتشار سری ۵: فوریه ۲۰۱۵ تا ۲۰۱۹ وضعیت: پایان عمر (End of Life)
لاراول ۵ در اصل قرار بود نسخه ۴.۳ باشد، اما حجم تغییرات به حدی زیاد بود که تیم توسعه تصمیم به افزایش شماره نسخه اصلی گرفت . این سری تغییرات عمیقی در ساختار پروژههای لاراول ایجاد کرد.
نسخههای شاخص سری ۵:
| نسخه | تاریخ انتشار | ویژگیهای شاخص |
|---|---|---|
| ۵.۰ | فوریه ۲۰۱۵ | ساختار جدید دایرکتوری، Scheduler برای زمانبندی وظایف، Flysystem |
| ۵.۱ | ژوئن ۲۰۱۵ | اولین نسخه LTS (پشتیبانی بلندمدت) |
| ۵.۳ | آگوست ۲۰۱۶ | Laravel Echo، Notification System، Scout |
| ۵.۴ | ژانویه ۲۰۱۷ | Laravel Dusk، Laravel Mix، Blade Components & Slots |
| ۵.۵ | آگوست ۲۰۱۷ | نسخه LTS دوم، معرفی Package Auto-Discovery |
| ۵.۶ | فوریه ۲۰۱۸ | Eloquent Date Casts، Argon2 Password Hashing |
| ۵.۷ | سپتامبر ۲۰۱۸ | Email Verification، Guest User Gates |
| ۵.۸ | فوریه ۲۰۱۹ | Eloquent Has-One-Through، بهبودهای Blade |
مهمترین دستاوردهای سری ۵:
- معرفی مفهوم LTS (Long Term Support): نسخههای ۵.۱ و ۵.۵ با ۳ سال پشتیبانی امنیتی و ۲ سال پشتیبانی باگ
- سیستم زمانبندی وظایف (Task Scheduling) – جایگزینی برای Cron jobs سنتی
- Laravel Dusk – تستهای مرورگر واقعی
- Laravel Mix – wrapper مدرن برای Webpack
- Notification System – ارسال اعلان از طریق کانالهای مختلف (ایمیل، SMS، Slack و غیره)
لاراول ۶ (سپتامبر ۲۰۱۹): ورود به Semantic Versioning
نسخه PHP موردنیاز: ۷.۲ و بالاتر تاریخ انتشار: ۳ سپتامبر ۲۰۱۹ وضعیت: پایان عمر (EOL: فوریه ۲۰۲۲ برای LTS)
لاراول ۶ تغییر مهمی در استراتژی نسخهبندی ایجاد کرد: مهاجرت به Semantic Versioning (SemVer) . این یعنی شماره نسخهها دیگر بر اساس ویژگیهای جدید افزایش نمییافتند، بلکه تغییرات شکستدهنده (Breaking Changes) معیار اصلی بودند.
ویژگیهای مهم لاراول ۶:
- Lazy Collections – پردازش بهینه دادههای حجیم بدون بارگذاری کامل در حافظه
- Eloquent Subquery Enhancements – بهبود چشمگیر زیرپرسوجوها
- Job Middleware – میانافزار برای وظایف صف
- Laravel Vapor Compatibility – هماهنگی با پلتفرم Serverless لاراول
- Semantic Versioning
- نسخه LTS با پشتیبانی طولانیمدت
- خارج شدن Frontend Scaffolding از هسته اصلی و انتقال به پکیج جداگانه
laravel/ui
لاراول ۷ (مارس ۲۰۲۰): Sanctum و Blade Components
نسخه PHP موردنیاز: ۷.۲.۵ و بالاتر تاریخ انتشار: ۳ مارس ۲۰۲۰ وضعیت: پایان عمر
معرفیهای انقلابی:
- Laravel Sanctum (Airlock سابق): سیستم احراز هویت سبک برای SPAها و APIهای موبایل
- Blade Component Tags & Anonymous Components: کامپوننتهای Blade بدون نیاز به کلاس اختصاصی
- Custom Eloquent Casts: تبدیلهای سفارشی برای attributeهای مدل
- Fluent String Operations: عملیات زنجیرهای و روان روی رشتهها
- HTTP Client: یک wrapper حداقلی و قدرتمند دور Guzzle
- First-Party CORS Support: پشتیبانی داخلی از Cross-Origin Resource Sharing
لاراول ۸ (سپتامبر ۲۰۲۰): Jetstream و کلاسهای Factory
نسخه PHP موردنیاز: ۷.۳ و بالاتر تاریخ انتشار: ۸ سپتامبر ۲۰۲۰ وضعیت: پایان عمر (EOL: مارس ۲۰۲۳)
تغییرات بزرگ و گاهی بحثبرانگیز:
- Laravel Jetstream: اسکفولدینگ پیشرفته احراز هویت با پشتیبانی از Livewire و Inertia.js
- Model Factory Classes: بازنویسی کامل Factoryها به صورت کلاسهای مجزا (تغییر شکستدهنده نسبت به نسخه ۷)
- Migration Squashing: فشردهسازی فایلهای مهاجرت برای پروژههای بزرگ
- Tailwind CSS به صورت پیشفرض برای Pagination
- Rate Limiting Improvements
- Dynamic Blade Components
تغییر ساختاری مهم: تغییر نحوه تعریف Model Factories از متد factory() قدیمی به کلاسهای HasFactory یکی از بزرگترین تغییرات شکستدهنده در تاریخ لاراول بود که نیازمند بازنویسی گسترده تستها در پروژههای موجود شد.
لاراول ۹ (فوریه ۲۰۲۲): مهاجرت به PHP 8
نسخه PHP موردنیاز: ۸.۰ و بالاتر تاریخ انتشار: ۸ فوریه ۲۰۲۲ وضعیت: پایان عمر (EOL: آگوست ۲۰۲۴)
لاراول ۹ سرانجام پشتیبانی از PHP 7 را به طور کامل قطع کرد و حداقل نسخه PHP به ۸.۰ افزایش یافت. همچنین این نسخه برخلاف برنامه اولیه، LTS نبود .
ویژگیهای کلیدی:
- PHP 8.0 Minimum Requirement – استفاده از Union Types، Attributes، و Match Expression
- Anonymous Stub Migrations – مهاجرتهای ناشناس برای جلوگیری از تداخل نام کلاسها
- New Query Builder Interface
- Symfony Mailer Integration – جایگزینی SwiftMailer
- Flysystem 3.x
- Improved Accessors/Mutators – سینتکس جدید
Illuminate\Database\Eloquent\Casts\Attribute
لاراول ۱۰ (فوریه ۲۰۲۳): تثبیت و پالایش
نسخه PHP موردنیاز: ۸.۱ و بالاتر تاریخ انتشار: ۱۴ فوریه ۲۰۲۳ وضعیت: پایان عمر (EOL: فوریه ۲۰۲۵)
لاراول ۱۰ یک نسخه تثبیتکننده (Stabilization Release) بود که تمرکز کمتری بر ویژگیهای بزرگ جدید و بیشتر بر پالایش کدبیس و حذف کدهای منسوخ داشت .
تغییرات قابل توجه:
- افزایش حداقل نسخه PHP به ۸.۱
- Native Type Declarations در سراسر فریمورک
- حذف
dispatchNow()منسوخ شده - Invokable Validation Rules به صورت پیشفرض
- بهبودهای Laravel Pennant برای Feature Flags
- Process Layer – اجرای فرآیندهای سیستمی با واسط شیءگرا
لاراول ۱۱ (مارس ۲۰۲۴): حذف Kernel و سادهسازی
نسخه PHP موردنیاز: ۸.۲ و بالاتر تاریخ انتشار: ۱۲ مارس ۲۰۲۴ وضعیت: دریافت بهروزرسانی امنیتی تا مارس ۲۰۲۶
لاراول ۱۱ با حذف فایلهای HTTP Kernel و Console Kernel، ساختار پروژه را به شدت سادهتر کرد و پیکربندیها را به bootstrap/app.php منتقل نمود.
نوآوریهای کلیدی:
- حذف Kernelها – میانافزارها و دستورات کنسول مستقیماً در
bootstrap/app.phpثبت میشوند - PHP 8.2 Minimum – پشتیبانی از readonly classes
- Graceful Encryption Key Rotation
- Contextual Attributes
- بهبودهای Model Casts
- Dumpable Trait
- Framework Agnostic Health Routing
لاراول ۱۲ (فوریه ۲۰۲۵): مسیر به سوی هوش مصنوعی
نسخه PHP موردنیاز: ۸.۲ و بالاتر (پشتیبانی تا ۸.۵) تاریخ انتشار: ۲۴ فوریه ۲۰۲۵ وضعیت: دریافت باگ فیکس تا آگوست ۲۰۲۶، امنیتی تا فوریه ۲۰۲۷
لاراول ۱۲ پلی به سوی عصر هوش مصنوعی بود و زیرساختهای لازم برای Laravel AI SDK را فراهم کرد .
ویژگیهای مهم:
- آمادهسازی برای Laravel AI SDK – زیرساختهای اولیه
- پشتیبانی از PHP 8.5
- بهبودهای Performance و Caching
- Concurrency Primitive Improvements
لاراول ۱۳ (مارس ۲۰۲۶): جهش به عصر هوش مصنوعی
آخرین نسخه پایدار (Current Stable): این بخش به تفصیل به بررسی نسخه ۱۳ لاراول میپردازد که جدیدترین نسخه اصلی در زمان نگارش این مستند است.
نسخه PHP موردنیاز: ۸.۳ و بالاتر (پشتیبانی تا ۸.۵) تاریخ انتشار: ۱۷ مارس ۲۰۲۶ وضعیت: دریافت باگ فیکس تا Q3 ۲۰۲۷، امنیتی تا مارس ۲۰۲۸
فلسفه نسخه ۱۳: ارتقای آسان، قابلیتهای عظیم
تیلور اوتول و تیم لاراول در نسخه ۱۳ رویکرد متفاوتی اتخاذ کردند: حداقل تغییرات شکستدهنده (Minimal Breaking Changes) همراه با ارائه قابلیتهای انقلابی به صورت اختیاری (Optional Revolutionary Features) .
"بخش عمده تمرکز ما در این چرخه انتشار، به حداقل رساندن تغییرات شکستدهنده معطوف بوده است. در عوض، ما خود را وقف ارائه بهبودهای مستمر کیفیت زندگی (Quality-of-Life Improvements) در طول سال کردهایم که برنامههای موجود را دچار اختلال نمیکنند." – تیم لاراول
این یعنی میتوانید پروژه لاراول ۱۲ خود را با کمترین تغییر در کد به نسخه ۱۳ ارتقا دهید، اما در عین حال به دریایی از قابلیتهای جدید – به ویژه در حوزه هوش مصنوعی – دسترسی پیدا کنید.
حداقل نسخه PHP: ۸.۳
لاراول ۱۳ پشتیبانی از PHP 8.2 را متوقف کرده و اکنون به PHP 8.3 یا بالاتر نیاز دارد .
مزایای این ارتقا:
- Typed Class Constants – ثابتهای کلاس با نوع مشخص
- بهبود
json_validate()– اعتبارسنجی JSON سریعتر و دقیقتر - Readonly Properties Enhancements – بهبود ویژگیهای فقطخواندنی
- JIT Optimizations – بهبود عملکرد Just-In-Time کامپایلر
- حذف Polyfillها و کدهای سازگاری قدیمی – فریمورک سبکتر و سریعتر
توجه به تغییرات عمده: در نسخه ۱۳، پشتیبانی از PHP 8.2 متوقف شده است. اگر پروژه شما هنوز روی PHP 8.2 اجرا میشود، ابتدا باید سرور خود را ارتقا دهید. همچنین پلیفیلهای قدیمی حذف شدهاند که باعث کاهش حجم و افزایش سرعت فریمورک شده است .
ویژگیهای جدید لاراول ۱۳
۱. پشتیبانی درجه یک از PHP Attributes
بزرگترین بهبود تجربه توسعهدهندگی در لاراول ۱۳، معرفی Native PHP Attributes در بیش از ۱۵ بخش مختلف فریمورک است . این ویژگی کاملاً اختیاری و سازگار با کدهای قدیمی است.
نمونه استفاده در Eloquent Models:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden;
use Illuminate\Database\Eloquent\Attributes\Table;
use Illuminate\Foundation\Auth\User as Authenticatable;
#[Table('users', key: 'user_id', keyType: 'string', incrementing: false)]
#[Hidden(['password', 'remember_token'])]
#[Fillable(['name', 'email', 'password'])]
class User extends Authenticatable
{
// بدنه کلاس میتواند خالی باشد یا شامل متدهای سفارشی شما
}
قبلاً این تنظیمات به صورت propertyهای protected داخل کلاس تعریف میشدند:
// روش قدیمی (هنوز هم معتبر است)
class User extends Authenticatable
{
protected $table = 'users';
protected $primaryKey = 'user_id';
protected $keyType = 'string';
public $incrementing = false;
protected $hidden = ['password', 'remember_token'];
protected $fillable = ['name', 'email', 'password'];
}
نمونه استفاده در Queue Jobs:
<?php
namespace App\Jobs;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
use Illuminate\Queue\Attributes\MaxExceptions;
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Timeout;
use Illuminate\Queue\Attributes\FailOnTimeout;
use Illuminate\Queue\Attributes\Backoff;
#[Tries(5)]
#[MaxExceptions(3)]
#[Timeout(60)]
#[FailOnTimeout]
#[Backoff([10, 30, 60])]
class ProcessPodcast implements ShouldQueue
{
use Queueable;
public function handle(): void
{
// منطق پردازش پادکست
}
}
نمونه استفاده در Controllers:
<?php
namespace App\Http\Controllers;
use App\Models\Flight;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;
#[Middleware('auth')]
class FlightController extends Controller
{
#[Middleware(LogRequests::class)]
#[Authorize('view', 'flight')]
public function show(Flight $flight)
{
return view('flights.show', compact('flight'));
}
}
قابلیت پیشرفته PHP 8.5: در PHP 8.5 میتوانید از Closureها مستقیماً در Attributeها استفاده کنید :
#[Middleware(static function (Request $request, Closure $next) {
info('Request logged via Attribute Closure');
return $next($request);
})]
public function show(Flight $flight) { }
۲. Laravel AI SDK (نسخه پایدار)
لاراول ۱۳ با Laravel AI SDK رسمی و پایدار عرضه میشود – یک API یکپارچه برای کار با سرویسهای هوش مصنوعی مختلف .
قابلیتهای AI SDK:
- Text Generation – تولید متن با مدلهای زبانی
- Tool-Calling Agents – عاملهای هوشمند با قابلیت فراخوانی ابزار
- Embeddings – تولید بردارهای معنایی
- Audio Generation & Processing – تولید و پردازش صوت
- Image Generation – تولید تصویر
- Vector Store Integrations – یکپارچگی با پایگاههای داده برداری
نمونه کد – ساخت یک Agent هوشمند:
<?php
namespace App\Ai\Agents;
use Laravel\Ai\Agent;
use Laravel\Ai\Tool;
class SalesCoach extends Agent
{
protected string $model = 'gpt-4-turbo';
protected array $tools = [
CalculateCommission::class,
AnalyzeSalesScript::class,
GenerateFollowUpEmail::class,
];
protected string $systemPrompt = <<<EOT
شما یک مربی فروش حرفهای هستید. وظیفه شما تحلیل متون مکالمات فروش،
ارائه بازخورد سازنده، و پیشنهاد استراتژیهای بهبود است.
EOT;
}
// استفاده از Agent
use App\Ai\Agents\SalesCoach;
$response = SalesCoach::make()->prompt('Analyze this sales transcript: ' . $transcript);
$analysis = (string) $response;
// ذخیره تحلیل در دیتابیس
SalesCallAnalysis::create([
'call_id' => $callId,
'ai_analysis' => $analysis,
'generated_at' => now(),
]);
نمونه کد – تولید تصویر:
<?php
use Laravel\Ai\Image;
use App\Models\Product;
use Illuminate\Support\Facades\Storage;
class ProductImageGenerator
{
public function generateForProduct(Product $product): string
{
$prompt = sprintf(
'Professional product photography of %s %s on white background, studio lighting',
$product->brand,
$product->name
);
$image = Image::of($prompt)
->size(1024, 1024)
->quality('hd')
->generate();
$path = 'products/ai-generated/' . $product->id . '.png';
Storage::disk('public')->put($path, (string) $image);
return Storage::url($path);
}
}
نمونه کد – تولید Embedding برای جستجوی معنایی:
<?php
use Illuminate\Support\Str;
use App\Models\Document;
class DocumentIndexer
{
public function index(Document $document): void
{
// تولید embedding از محتوای سند
$embeddings = Str::of($document->content)->toEmbeddings();
// ذخیره برای جستجوی برداری
$document->embeddings()->create([
'vector' => $embeddings,
'model' => 'text-embedding-3-small',
]);
}
}
۳. JSON:API Resources داخلی
لاراول ۱۳ اکنون به صورت پیشفرض از JSON:API specification پشتیبانی میکند . این یعنی میتوانید APIهایی کاملاً منطبق با استاندارد JSON:API بسازید بدون نیاز به پکیجهای شخص ثالث.
قابلیتهای کلیدی:
- Resource Object Serialization – سریالایز کردن اشیاء مطابق استاندارد
- Relationship Inclusion – مدیریت روابط و شاملسازی آنها
- Sparse Fieldsets – بازگرداندن فقط فیلدهای درخواستی
- JSON:API Links – تولید لینکهای استاندارد
- Compliant Response Headers – هدرهای استاندارد JSON:API
<?php
namespace App\Http\Resources;
use Illuminate\Http\JsonApi\JsonApiResource;
class ArticleResource extends JsonApiResource
{
public function toArray($request): array
{
return [
'type' => 'articles',
'id' => (string) $this->id,
'attributes' => [
'title' => $this->title,
'body' => $this->body,
'createdAt' => $this->created_at->toISOString(),
'updatedAt' => $this->updated_at->toISOString(),
],
'relationships' => [
'author' => [
'data' => [
'type' => 'users',
'id' => (string) $this->user_id,
],
],
'comments' => $this->whenLoaded('comments', function () {
return [
'links' => [
'related' => route('articles.comments', $this->id),
],
];
}),
],
'links' => [
'self' => route('articles.show', $this->id),
],
];
}
}
// استفاده در کنترلر
class ArticleController extends Controller
{
public function show(Article $article): JsonApiResource
{
$article->load('author');
return new ArticleResource($article);
}
}
۴. مسیریابی صف (Queue Routing)
لاراول ۱۳ امکان تعریف قوانین مسیریابی صف بر اساس کلاس Job را فراهم میکند . این ویژگی مدیریت متمرکز اتصالات (Connections) و صفها (Queues) را بسیار سادهتر میکند.
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Queue;
use App\Jobs\ProcessPodcast;
use App\Jobs\GenerateReport;
use App\Jobs\SendWelcomeEmail;
class QueueRoutingServiceProvider extends ServiceProvider
{
public function boot(): void
{
// مسیریابی Jobهای پردازش سنگین به Redis
Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'heavy-processing');
// مسیریابی گزارشها به صف اختصاصی با اولویت بالا
Queue::route(GenerateReport::class, connection: 'redis', queue: 'reports');
// ایمیلها روی connection پیشفرض ولی صف جداگانه
Queue::route(SendWelcomeEmail::class, queue: 'emails');
// تعیین حداکثر تعداد تلاش برای نوع خاصی از Job
Queue::route(ProcessPodcast::class, tries: 5);
}
}
۵. جستجوی معنایی/برداری (Semantic/Vector Search)
لاراول ۱۳ با پشتیبانی داخلی از جستجوی برداری با PostgreSQL + pgvector، ساخت تجربههای جستجوی مبتنی بر هوش مصنوعی را سادهتر کرده است .
<?php
namespace App\Services;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
class SemanticSearchService
{
public function searchSimilarDocuments(string $query, int $limit = 10)
{
// اجرای جستجوی تشابه معنایی مستقیماً با Query Builder
return DB::table('documents')
->whereVectorSimilarTo('embedding', $query)
->limit($limit)
->get();
}
public function hybridSearch(string $query, int $limit = 10)
{
// ترکیب جستجوی معنایی و جستجوی full-text سنتی
return DB::table('documents')
->whereVectorSimilarTo('embedding', $query)
->whereFullText('content', $query)
->orderByRaw('
(vector_similarity(embedding, ?) * 0.7) +
(MATCH(content) AGAINST(? IN NATURAL LANGUAGE MODE) * 0.3) DESC
', [$query, $query])
->limit($limit)
->get();
}
}
// نمونه migration برای ستون embedding
Schema::create('documents', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->vector('embedding', 1536); // برای OpenAI text-embedding-3-small
$table->fullText('content');
$table->timestamps();
});
// ایندکس برای جستجوی سریعتر
Schema::table('documents', function (Blueprint $table) {
$table->index('embedding', 'documents_embedding_idx', 'ivfflat');
});
۶. متد Cache::touch()
لاراول ۱۳ متد جدید Cache::touch() را معرفی کرده که امکان تمدید TTL کش بدون خواندن یا بازنویسی مقدار را فراهم میکند .
مزیت عملکردی: قبلاً برای تمدید TTL نیاز به get() و سپس put() داشتید که باعث انتقال غیرضروری داده روی شبکه میشد. Cache::touch() این مرحله را حذف میکند – Redis از دستور EXPIRE، Memcached از TOUCH، و Database Driver از یک UPDATE ساده استفاده میکند .
<?php
namespace App\Services;
use Illuminate\Support\Facades\Cache;
class SessionManager
{
// تمدید session کش با ثانیه
public function extendSession(string $sessionId): bool
{
return Cache::touch('user_session:' . $sessionId, 3600);
}
// تمدید با DateTime
public function extendAnalyticsCache(): bool
{
return Cache::touch('analytics_data', now()->addHours(6));
}
// تبدیل به کش دائمی (حذف انقضا)
public function makePermanent(string $key): bool
{
return Cache::touch($key, null);
}
// الگوی Sliding Session
public function handleUserActivity(string $userId): void
{
$sessionKey = "user_activity:{$userId}";
if (Cache::has($sessionKey)) {
// کاربر فعال است – فقط TTL را تمدید کن
Cache::touch($sessionKey, 300); // ۵ دقیقه دیگر
} else {
// اولین فعالیت – session جدید بساز
Cache::put($sessionKey, ['last_seen' => now()], 300);
}
}
}
۷. Reverb Database Driver
پیش از این، برای مقیاسپذیری افقی Laravel Reverb (سرور WebSocket لاراول) به Redis نیاز داشتید. لاراول ۱۳ با معرفی Database Driver امکان استفاده از MySQL یا PostgreSQL موجود را به عنوان Message Broker فراهم میکند .
// config/reverb.php
return [
'default' => 'reverb',
'apps' => [
[
'id' => env('REVERB_APP_ID'),
'key' => env('REVERB_APP_KEY'),
'secret' => env('REVERB_APP_SECRET'),
],
],
'servers' => [
'reverb' => [
'driver' => 'database', // به جای 'redis'
'connection' => env('REVERB_DB_CONNECTION', 'mysql'),
],
],
];
۸. Passkey Authentication در Starter Kits
Passkeyها (احراز هویت بدون رمز عبور مبتنی بر WebAuthn) اکنون در Starter Kitها و Laravel Fortify یکپارچه شدهاند . کاربران میتوانند با Face ID، Touch ID، یا کلیدهای سختافزاری وارد شوند – بدون نیاز به رمز عبور.
// فعالسازی Passkey در Fortify
// config/fortify.php
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
Features::updateProfileInformation(),
Features::updatePasswords(),
Features::passkeys(), // ← ویژگی جدید
],
// مدل User با trait مربوطه
use Laravel\Fortify\TwoFactorAuthenticatable;
use Laravel\Fortify\HasPasskeys;
class User extends Authenticatable
{
use HasPasskeys;
// ...
}
۹. بازگشت قابلیت Teams به Starter Kits
قابلیت چند مستأجری (Multi-tenancy) مبتنی بر تیم که قبلاً در Jetstream وجود داشت، اکنون با پیادهسازی بهبودیافته به Starter Kitهای رسمی بازگشته است .
بهبود نسبت به Jetstream قدیم: در پیادهسازی جدید میتوانید دو تیم مختلف را همزمان در تبهای مختلف مرورگر باز داشته باشید – قابلیتی که در Jetstream قدیمی امکانپذیر نبود .
۱۰. سایر بهبودها
MySQL DELETE…JOIN با ORDER BY/LIMIT: لاراول ۱۳ اکنون از سینتکس کامل DELETE…JOIN در MySQL پشتیبانی میکند. قبلاً ORDER BY و LIMIT بیصدا نادیده گرفته میشدند .
// حذف ۱۰ کامنت قدیمیترین پستهای یک کاربر خاص
DB::table('comments')
->join('posts', 'posts.id', '=', 'comments.post_id')
->where('posts.user_id', $userId)
->orderBy('comments.created_at')
->limit(10)
->delete();
رفع مشکل HTTP Pool Concurrency: قبلاً Http::pool() به دلیل default null بودن concurrency، درخواستها را سریال اجرا میکرد. لاراول ۱۳ مقدار پیشفرض را به ۲ تغییر داده است .
use Illuminate\Support\Facades\Http;
$responses = Http::pool(fn ($pool) => [
$pool->get('https://api.example.com/users'),
$pool->get('https://api.example.com/posts'),
$pool->get('https://api.example.com/comments'),
]);
// اکنون ۲ درخواست همزمان اجرا میشوند
پشتیبانی از Symfony 7.4 و 8.0
روشهای ارتقا به لاراول ۱۳
روش ۱: Laravel Boost (ارتقای مبتنی بر هوش مصنوعی)
Laravel Boost یک MCP Server رسمی است که راهنماییهای گامبهگام ارتقا را به دستیارهای برنامهنویسی هوش مصنوعی ارائه میدهد .
# نصب Laravel Boost در پروژه لاراول ۱۲
composer require laravel/boost --dev
# سپس در Claude Code، Cursor، OpenCode، یا VS Code
/upgrade-laravel-13
روش ۲: Laravel Shift (PR خودکار)
Laravel Shift یک Pull Request با کامیتهای اتمی و ساختاریافته برای شما ایجاد میکند .
روش ۳: ارتقای دستی (Manual Upgrade)
برای ارتقای دستی، composer.json را بهروزرسانی کنید :
{
"require": {
"php": "^8.3",
"laravel/framework": "^13.0",
"laravel/tinker": "^3.0"
},
"require-dev": {
"phpunit/phpunit": "^12.0",
"pestphp/pest": "^4.0"
}
}
سپس اجرا کنید:
composer update
ابزار خودکارسازی Rector: پکیج muhammadsadeeq/laravel-upgrades-rector با ۲۰ قانون اختصاصی برای مسیر ارتقای Laravel 12 → 13 میتواند فرآیند ارتقا را خودکار کند .
جدول خلاصه پشتیبانی و الزامات نسخهها
| نسخه | حداقل PHP | تاریخ انتشار | پایان باگ فیکس | پایان امنیتی |
|---|---|---|---|---|
| ۱۰ | ۸.۱ - ۸.۳ | ۱۴ فوریه ۲۰۲۳ | ۶ آگوست ۲۰۲۴ | ۴ فوریه ۲۰۲۵ |
| ۱۱ | ۸.۲ - ۸.۴ | ۱۲ مارس ۲۰۲۴ | ۳ سپتامبر ۲۰۲۵ | ۱۲ مارس ۲۰۲۶ |
| ۱۲ | ۸.۲ - ۸.۵ | ۲۴ فوریه ۲۰۲۵ | ۱۳ آگوست ۲۰۲۶ | ۲۴ فوریه ۲۰۲۷ |
| ۱۳ | ۸.۳ - ۸.۵ | ۱۷ مارس ۲۰۲۶ | Q3 ۲۰۲۷ | مارس ۲۰۲۸ |
منبع:
منابع تکمیلی و لینکهای مفید
محتوای فوق بهگونهای تنظیم شده که تقریباً نیاز به جستجوی خارجی برای فهم مطلب را به صفر میرساند؛ اما منابع زیر صرفاً برای تعمیق بیشتر و دیدن کاربردهای عملی پیشنهاد شدهاند.
مستندات رسمی
اخبار و مقالات
ابزارهای ارتقا
- Laravel Shift – ارتقای خودکار با PR
- Laravel Boost – ارتقای مبتنی بر هوش مصنوعی
- Laravel Upgrades Rector – قوانین Rector برای ارتقا
ویدیوهای پیشنهادی
- Laracon EU 2026 Keynote (Taylor Otwell) – معرفی لاراول ۱۳ و دموی آینده توسعه با هوش مصنوعی
- Laravel YouTube Channel – مجموعه ویدیوهای "What's New in Laravel 13"