# Laravel 13

# Laravel 13 — Developerlar uchun eng muhim yangilanishlar

Laravel 13 rasmiy ravishda chiqdi va framework yana bir qadam **modern PHP architecture** tomon rivojlandi. Bu versiya katta feature release bo‘lmasa ham, **developer experience, performance va PHP Attributes asosidagi konfiguratsiya** kengaytirilgani bilan ajralib turadi.

Bu maqolada Laravel 13 dagi **eng foydali va amaliy yangilanishlarni** ko‘rib chiqamiz.

* * *

# Laravel 13 Requirements

Laravel 13 yangi PHP versiyalariga moslashtirilgan. Frameworkni ishlatish uchun quyidagi minimal talablar mavjud:

*   **PHP 8.3 yoki undan yuqori**
    
*   **Composer 2.7+**
    
*   **Symfony 8 komponentlari**
    

Bu o‘zgarishlar Laravelni zamonaviy PHP imkoniyatlariga moslashtiradi va framework ichida ko‘plab optimizatsiyalarni ta’minlaydi.

* * *

# Laravel AI SDK endi Stable

Laravel ekotizimidagi yana bir muhim yangilik — **Laravel AI SDK endi stable versiyada chiqarildi**.

Bu SDK yordamida siz AI modellar bilan ishlashni Laravel ilovalari ichida juda oson integratsiya qilishingiz mumkin.

Masalan:

*   OpenAI
    
*   Anthropic
    
*   boshqa AI providerlar
    

bilan ishlash uchun yagona API taqdim etadi.

Bu ayniqsa quyidagi use-case lar uchun foydali:

*   AI chatbotlar
    
*   AI content generation
    
*   AI powered search
    
*   AI assistants
    

Laravel ekotizimida AI integratsiyasi endi ancha soddalashdi.

* * *

# 1\. Controller Middleware uchun PHP Attributes

Laravel 13 da controller middleware larni **PHP attributes orqali** belgilash mumkin.

Laravel 12 da middleware odatda route yoki constructor orqali yozilardi.

### Laravel 12

```php
class UserController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
}
```

### Laravel 13

```php
use Illuminate\Routing\Attributes\Controllers\Middleware;

#[Middleware('auth')]
class UserController
{
}
```

Bundan tashqari method darajasida ham middleware qo‘yish mumkin:

```php
#[Middleware('auth')]
class UserController
{
    #[Middleware('log')]
    public function index()
    {
        //
    }
}
```

Natija:

*   controller code cleaner
    
*   constructor middleware yo‘q
    
*   metadata class darajasida turadi
    

* * *

# 2\. Authorization Attributes

Controller ichida policy tekshirish ham attribute orqali yozilishi mumkin.

```php
use Illuminate\Routing\Attributes\Controllers\Authorize;

class CommentController
{
    #[Authorize('delete', 'comment')]
    public function destroy(Comment $comment)
    {
        //
    }
}
```

Bu aslida quyidagi middleware ni replacement qiladi:

```php
->middleware('can:delete,comment')
```

Natija:

*   policy authorization **deklarativ bo‘ldi**
    
*   controller o‘qilishi osonlashdi.
    

* * *

# 3\. Queue va Event Listener Attributes

Laravel 13 da queue konfiguratsiyasi ham attribute orqali yozilishi mumkin.

```php
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Timeout;

#[Tries(5)]
#[Timeout(120)]
class SendShipmentNotification implements ShouldQueue
{
}
```

Oldin bu property orqali yozilardi:

```php
public $tries = 5;
public $timeout = 120;
```

Shuningdek boshqa attribute lar ham mavjud:

*   `#[Backoff]`
    
*   `#[MaxExceptions]`
    
*   `#[FailOnTimeout]`
    
*   `#[Connection]`
    
*   `#[Queue]`
    
*   `#[Delay]`
    

Natija:

queue konfiguratsiyasi **class metadata orqali yoziladi**.

* * *

# 4\. Cache::touch() — TTL yangilash

Laravel 13 da cache uchun yangi metod qo‘shildi.

```php
Cache::touch('key', 3600);
```

Bu metod:

*   cache value ni o‘zgartirmaydi
    
*   faqat **TTL (expiration)** ni yangilaydi.
    

Masalan:

```php
Cache::touch('session:123', now()->addHours(2));
```

Bu juda foydali:

*   session refresh
    
*   activity tracking
    
*   cache regeneration oldini olish
    

* * *

# 5\. Cache Memoization

Laravel 13 da yangi **memo cache driver** mavjud.

```php
Cache::memo()->get('key');
```

Bu nimani qiladi:

1-chi call → real cache store 2-chi call → memory

Misol:

```php
Cache::memo()->get('users');
Cache::memo()->get('users');
```

Ikkinchi call:

*   Redis ga bormaydi
    
*   memory dan qaytaradi.
    

Bu ayniqsa:

*   service layer
    
*   repository layer
    

da performance beradi.

* * *

# 6\. Cache Failover Driver

Laravel 13 cache uchun **failover driver** qo‘shdi.

```php
'failover' => [
    'driver' => 'failover',
    'stores' => [
        'redis',
        'database'
    ]
]
```

Agar Redis ishlamay qolsa Laravel avtomatik fallback qiladi:

```plaintext
redis → database
```

Bu production uchun juda foydali:

*   Redis crash
    
*   Memcached down
    

holatlarida ilova ishlashda davom etadi.

* * *

# 7\. Event Dispatch After DB Commit

Ba’zi eventlar transaction tugagandan keyin dispatch bo‘lishi kerak.

Laravel 13 da event class ichida quyidagicha yozish mumkin:

```php
use Illuminate\Contracts\Events\ShouldDispatchAfterCommit;

class OrderShipped implements ShouldDispatchAfterCommit
{
}
```

Natija:

*   event faqat **transaction commit bo‘lgandan keyin ishlaydi**
    
*   inconsistent data muammosi kamayadi.
    

* * *

# 8\. Event Defer

Laravel 13 event dispatch ni **kechiktirish** imkonini ham beradi.

```php
Event::defer(function () {
    $user = User::create([...]);
    $user->posts()->create([...]);
});
```

Bu:

*   barcha eventlarni
    
*   closure tugagandan keyin
    

dispatch qiladi.

Bu ayniqsa:

*   complex model creation
    
*   seeders
    
*   bulk operations
    

uchun juda foydali.

* * *

# 9\. Validation: Form Request Attributes

Laravel 13 validation tizimida ham **PHP attributes** qo‘llab-quvvatlashi kengaytirildi. Endi ba'zi Form Request konfiguratsiyalarini metod yozmasdan, **attribute orqali deklarativ tarzda** yozish mumkin.

Bu kodni yanada **clean va o‘qilishi oson** qiladi.

* * *

## 1\. StopOnFirstFailure Attribute

Agar validation birinchi xatoda to‘xtashi kerak bo‘lsa, endi class ustida attribute qo‘yish mumkin.

Oldin:

```php
$validator->stopOnFirstFailure()->fails();
```

Laravel 13:

```php
use Illuminate\Foundation\Http\Attributes\StopOnFirstFailure;
use Illuminate\Foundation\Http\FormRequest;

#[StopOnFirstFailure]
class StorePostRequest extends FormRequest
{
    public function rules(): array
    {
        return [
            'title' => 'required|max:255',
            'body' => 'required',
        ];
    }
}
```

Bu validatorni **birinchi xatoda to‘xtatadi**.

* * *

## 2\. RedirectTo Attribute

Validation xato bo‘lsa qayerga redirect bo‘lishini attribute bilan belgilash mumkin.

```php
use Illuminate\Foundation\Http\Attributes\RedirectTo;
use Illuminate\Foundation\Http\FormRequest;

#[RedirectTo('/dashboard')]
class StorePostRequest extends FormRequest
{
}
```

Oldin buni controller yoki boshqa joyda qo‘lda boshqarish kerak edi.

* * *

## 3\. RedirectToRoute Attribute

Agar redirect **route nomi orqali** qilinishi kerak bo‘lsa:

```php
use Illuminate\Foundation\Http\Attributes\RedirectToRoute;

#[RedirectToRoute('dashboard')]
class StorePostRequest extends FormRequest
{
}
```

Bu route helper ishlatishni soddalashtiradi.

* * *

## 4\. ErrorBag Attribute

Agar sahifada bir nechta form bo‘lsa, validation xatolarini alohida bag ichiga joylash mumkin.

```php
use Illuminate\Foundation\Http\Attributes\ErrorBag;

#[ErrorBag('login')]
class LoginRequest extends FormRequest
{
}
```

Blade’da foydalanish:

```blade
{{ $errors->login->first('email') }}
```

* * *

## 5\. Clean Controller Validation

Laravel 13 bilan FormRequest ishlatish yana ham **toza arxitektura** beradi.

Controller endi faqat biznes logikani bajaradi:

```php
public function store(StorePostRequest $request)
{
    $data = $request->validated();

    Post::create($data);
}
```

Validation esa **FormRequest ichida kapsulalanadi**.

* * *

# Xulosa

Laravel 13 katta feature release bo‘lmasa ham, framework ichida **muhim arxitektura o‘zgarishlari** mavjud.

Eng muhim yangiliklar:

*   PHP 8.3 requirement
    
*   Laravel AI SDK stable
    
*   Controller middleware uchun **PHP Attributes**
    
*   Authorization attributes
    
*   Queue listener attributes
    
*   **Cache::touch()**
    
*   **Stale-While-Revalidate caching**
    
*   **Memo cache driver**
    
*   **Cache failover**
    
*   Event dispatch after DB commit
    
*   Event defer
    
*   **Attribute-based configuration**
    
*   **cleaner FormRequest classes**
    
*   **kamroq boilerplate code**
    
*   **controllerlarni soddalashtirish**
    

Laravel asta-sekin **configuration → attributes** modeliga o‘tmoqda. Bu esa frameworkni yanada **cleaner va declarative** qiladi.
