برنامه نویسی - بک‌اند - طراحی وب - فرانت‌اند

تمامی چیزهایی که باید درباره Laravel 13 بدانید

لاراول 13 نسل ۲۰۲۶ این فریم ورک است که طبق ریلیز نوت رسمی، تمرکز اصلی اش روی «AI-native workflows»، پیش فرض های امن تر، و APIهای بیانگرتر است؛ در عین حال طبق راهنمای ارتقا، برای اکثر پروژه ها یک ارتقای کم دردسر و سریع محسوب می شود.

Laravel 13 دقیقا چیست و چرا مهم است؟

Laravel 13 ادامه روند انتشار سالانه لاراول است و چند پیام واضح دارد:

  1. حداقل PHP 8.3: یعنی اگر پروژه شما روی 8.2 یا پایین تر است، قبل از هر کاری باید زیرساخت اجرا را آماده کنید.
  2. AI به صورت رسمی و First-party: یعنی برای کارهای رایج هوش مصنوعی (تولید متن، تصویر، امبدینگ، agentها و…) دیگر لازم نیست همیشه از چند پکیج پراکنده استفاده کنید.
  3. امنیت با پیش فرض های سخت گیرانه تر: مخصوصا در بحث cache serialization و میان افزار جدید جلوگیری از جعل درخواست.
  4. کمترین Breaking Change: تیم لاراول عمدا تلاش کرده ارتقای 12 به 13 سریع باشد (در خود آپگرید گاید زمان تخمینی حدود ۱۰ دقیقه ذکر شده).

نسخه ها، پشتیبانی و نیازمندی ها (آن چیزی که قبل از کدنویسی باید بدانید)

1) سیاست نسخه بندی و سازگاری

لاراول از Semantic Versioning پیروی می کند:

  • Major (مثل 12 → 13) می تواند Breaking Change داشته باشد.
  • Minor/Patch نباید Breaking Change داشته باشند.

نکته حرفه ای: در composer.json بهتر است constraintها را به شکل ^13.0 تنظیم کنید تا آپدیت های Minor/Patch را بدون درگیری بگیرید.

2) حداقل PHP

طبق مستندات رسمی:

  • Laravel 13.x حداقل PHP 8.3 می خواهد.

این یعنی:

  • سرور، لوکال، CI و حتی imageهای Docker باید همگی هم راستا شوند.
  • پکیج های قدیمی که PHP 8.3 را ساپورت نمی کنند، اولین منبع دردسر شما خواهند بود (نه خود لاراول).

مهم ترین قابلیت های جدید Laravel 13 (با نگاه عملی)

1) Laravel AI SDK (هسته AI به صورت رسمی)

لاراول 13 یک SDK رسمی برای AI معرفی کرده که هدفش این است:

  • شما یک API لاراولی و provider-agnostic داشته باشید.
  • بعدا اگر provider را عوض کردید (یا چند provider داشتید)، کدتان به هم نریزد.
  • کارهای رایج: text generation, tool-calling agents, embeddings, audio, image و یکپارچه سازی با vector store.

مدل ذهنی (چطور به آن نگاه کنیم؟)

AI SDK را مثل این ببینید:

  • Service جدید در لایه infrastructure
  • با قراردادهای مشخص
  • و façade / entrypointهای تمیز برای use-caseهای مختلف

مثال ها (از ریلیز نوت)

تولید پاسخ با یک agent:

use App\Ai\Agents\SalesCoach;

$response = SalesCoach::make()->prompt('Analyze this sales transcript...');

return (string) $response;

تولید تصویر:

use Laravel\Ai\Image;

$image = Image::of('A donut sitting on the kitchen counter')->generate();
$rawContent = (string) $image;

تولید صوت:

use Laravel\Ai\Audio;

$audio = Audio::of('I love coding with Laravel.')->generate();
$rawContent = (string) $audio;

تولید امبدینگ (برای semantic search / RAG):

use Illuminate\Support\Str;

$embeddings = Str::of('Napa Valley has great wine.')->toEmbeddings();

نکات معماری برای پروژه واقعی

  • برای تولید امبدینگ، صف (Queue) بگذارید: هم هزینه کنترل می شود، هم UX بهتر است.
  • نتیجه امبدینگ را در یک vector store (یا دیتابیس مناسب) ذخیره کنید و برای جستجوی معنایی استفاده کنید.
  • خروجی AI را مثل input کاربر «غیرقابل اعتماد» فرض کنید: validate، sanitize و محدودیت دسترسی اعمال کنید.

2) JSON:API Resources (خروجی استاندارد API)

لاراول 13 JSON:API resources را به صورت First-party اضافه کرده است تا:

  • ساختار response مطابق استاندارد JSON:API باشد
  • مدیریت relationshipها، includeها، sparse fieldsetها، links و headerهای استاندارد ساده شود.

چرا این برای تیم های حرفه ای مهم است؟

چون در APIهای بزرگ:

  • یک استاندارد خروجی، هزینه هماهنگی frontend/backend را کم می کند.
  • و با رشد پروژه، consistency حفظ می شود.

3) PreventRequestForgery (تقویت CSRF / جعل درخواست)

در لاراول 13، میان افزار حفاظت از جعل درخواست formalized و بهتر شده و با نام:

  • PreventRequestForgery

ارائه شده و origin-aware request verification را اضافه می کند در کنار سازگاری با توکن CSRF.

نکته امنیتی

اگر با چند subdomain، reverse proxy، یا SPA روی دامنه جدا کار می کنید:

  • حتما رفتار originها و headerها را در staging تست کنید.
  • چون تغییرات امنیتی معمولا روی محیط های واقعی (CDN/WAF) خودش را نشان می دهد.

4) Queue Routing (مسیر دهی صف بر اساس کلاس Job)

لاراول 13 امکان route کردن jobها را به شکل مرکزی اضافه کرده:

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');

چرا این عالی است؟

در پروژه های بزرگ معمولا این درد را دارید:

  • بعضی jobها باید سریع اجرا شوند (queue جدا)
  • بعضی jobها heavy هستند (worker جدا)
  • بعضی jobها IO bound هستند (connection جدا)

با route مرکزی:

  • از پخش شدن ->onQueue() و ->onConnection() در کل کد جلوگیری می کنید.
  • معماری queue تمیزتر می شود.

5) گسترش PHP Attributes (اعلان محور شدن رفتارها)

لاراول 13 پشتیبانی attributeها را در بخش های بیشتری گسترش داده؛ نمونه هایی که در ریلیز نوت آمده:

  • #[Middleware]
  • #[Authorize]
  • و برای jobها: #[Tries], #[Backoff], #[Timeout], #[FailOnTimeout]

مثال:

use App\Models\Comment;
use App\Models\Post;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;

#[Middleware('auth')]
class CommentController
{
    #[Middleware('subscribed')]
    #[Authorize('create', [Comment::class, 'post'])]
    public function store(Post $post)
    {
        // ...
    }
}

نگاه مهندسی

Attributes یعنی:

  • رفتار نزدیک کد قرار می گیرد (co-located)
  • readability بالا می رود
  • اما باید مراقب باشید config پراکنده و غیرقابل جستجو نشود

پیشنهاد تیمی:

  • برای پروژه های بزرگ، یک convention داخلی تعیین کنید: چه چیزهایی attribute و چه چیزهایی config.

6) Cache::touch و تغییرات مهم Cache Serialization

Cache::touch

Laravel 13 متدی اضافه کرده که TTL یک آیتم cache را بدون re-store کردن مقدار تمدید می کند:

  • Cache::touch(...)

این در سناریوهایی مثل sliding expiration خیلی کاربردی است.

سخت گیری امنیتی: serializable_classes

در آپگرید گاید آمده:

  • مقدار پیش فرض serializable_classes در config cache روی false قرار گرفته تا ریسک حملات deserialization کاهش یابد (خصوصا اگر APP_KEY لو برود).

اگر شما عمدا object در cache می گذارید:

  • باید allow-list کلاس ها را مشخص کنید.

نکته: در سیستم های بزرگ بهتر است payload cache را array/JSON نگه دارید نه object؛ چون:

  • نسخه بندی ساده تر می شود
  • ریسک امنیتی کمتر می شود
  • وابستگی به ساختار کلاس کاهش می یابد

ارتقا به Laravel 13 از Laravel 12

طبق Upgrade Guide رسمی، زمان تخمینی ارتقا حدود ۱۰ دقیقه است (اگر پروژه خیلی خاص نباشد). اما در عمل برای تیم های حرفه ای، مسیر درست این است:

گام 1: آماده سازی (قبل از composer update)

  1. PHP را روی همه محیط ها به 8.3 ارتقا دهید (لوکال، CI، سرور).
  2. یک Branch جدا برای upgrade بسازید.
  3. تست ها را سبز کنید (اگر تست ندارید، حداقل smoke test بنویسید: لاگین، CRUD اصلی، queue worker).

گام 2: آپدیت وابستگی ها

طبق مستندات:

  • laravel/framework^13.0
  • laravel/boost^2.0
  • laravel/tinker^3.0
  • phpunit/phpunit^12.0
  • pestphp/pest^4.0

سپس:

  • composer update
  • و رفع تعارض پکیج ها (معمولا اصلی ترین قسمت کار همین است)

گام 3: بررسی High Impact Changes

  • Request Forgery Protection: رفتار originها و CSRF را در محیط واقعی تست کنید.
  • Cache serialization: اگر object cache می کنید، سریع تکلیف serializable_classes را مشخص کنید.

گام 4: بررسی Medium/Low Impact

از مواردی که در Upgrade Guide ذکر شده:

  • تغییر پیش فرض prefixهای cache و session cookie (اگر به fallbackهای framework متکی بودید)
  • تغییر رفتار Container::call در پارامتر nullable با default null
  • موارد مرتبط با MySQL در برخی queryهای DELETE با JOIN/ORDER/LIMIT (برای سیستم های قدیمی ممکن است مهم شود)

ارتقا با AI (رویکرد جدید تیم لاراول)

Laravel 13 پیشنهاد می دهد از Laravel Boost به عنوان MCP server استفاده کنید و با یک slash command فرایند ارتقا را هدایت کنید:

  • دستور /upgrade-laravel-v13
  • نیازمند laravel/boost ^2.0

این برای تیم هایی عالی است که:

  • کدبیس بزرگ دارند
  • می خواهند checklist ارتقا را سریع و با کمترین خطا جلو ببرند
  • اما باز هم باید خروجی را review کنید (AI جای review را نمی گیرد)

نصب و راه اندازی Laravel 13 (برای پروژه جدید)

از Installation رسمی:

  • نیاز دارید PHP + Composer + Laravel Installer
  • و برای assetها: Node/NPM یا Bun

در تیم های حرفه ای پیشنهاد می کنم:

  • روی لوکال از ابزارهای رسمی مثل Herd (در صورت امکان) یا Docker استفاده کنید
  • روی CI یک matrix ساده بسازید (PHP 8.3 + DB)
  • از همان اول queue و scheduler را جدا طراحی کنید

نکات معماری و Best Practice برای Laravel 13

1) AI را Feature محور پیاده کنید، نه هیجانی

به جای اینکه «AI را همه جا بریزید»، use-case تعریف کنید:

  • جستجوی معنایی محصولات
  • خلاصه سازی تیکت های پشتیبانی
  • پیشنهاد پاسخ برای اپراتور
  • دسته بندی خودکار محتوا

هر use-case:

  • ورودی مشخص
  • خروجی مشخص
  • logging و monitoring
  • fallback (اگر provider قطع شد)

2) Queue-first برای کارهای AI و پردازش سنگین

هر چیزی که:

  • IO زیاد دارد
  • هزینه دارد
  • یا latency بالا دارد

باید برود صف. بعد route کردن صف ها در Laravel 13 تمیزتر هم شده است.

3) امنیت Cache را جدی بگیرید

اگر قبلا هر چیزی را object می کردید و می گذاشتید cache:

  • الان وقت refactor است
  • یا allow-list دقیق بنویسید

4) از استاندارد JSON:API برای تیم های چندکلاینتی استفاده کنید

اگر شما:

  • وب + اپ موبایل + پنل جدا دارید

JSON:API می تواند استاندارد مشترک خروجی باشد.

جمع بندی

Laravel 13 یک ارتقای کم ریسک اما بسیار مهم است: حداقل PHP 8.3، SDK رسمی AI، استانداردسازی بهتر APIها با JSON:API، بهبودهای امنیتی مثل PreventRequestForgery و سخت گیری در unserialize شدن cache، و همچنین کیفیت زندگی بهتر در صف ها با Queue routing و Attributeهای بیشتر.

اگر پروژه شما Laravel 12 است، بهترین مسیر این است:

  1. PHP 8.3 را آماده کنید
  2. وابستگی ها را طبق Upgrade Guide بالا ببرید
  3. موارد امنیتی cache و CSRF را در staging تست کنید
  4. سپس release کنید

اگر قصد طراحی سایت یا توسعه وب اپلیکیشن با Laravel 13 را دارید و می خواهید معماری پروژه از ابتدا اصولی، امن و قابل توسعه باشد، از طریق صفحه تماس با ما با طراحان نوین در ارتباط باشید تا نیاز پروژه را بررسی و مسیر اجرای درست را پیشنهاد کنیم.

دیدگاهتان را بنویسید

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