Veb inkişafının ilkin dövrlərində PHP saytları çox vaxt pərakəndə skriptlər şəklində yazılırdı. Tək bir articles.php faylında proqramçı verilənlər bazasına qoşulur, SQL sorğusu icra edir, $_GET vasitəsilə daxil olan parametrləri yoxlayır, biznes məntiqini icra edir və PHP teqlərini HTML strukturu ilə qarışdırırdı. Layihə böyüdükcə bu yanaşma «spagetti-kod» probleminə çevrilirdi: bazanın strukturunda kiçik bir dəyişiklik bütün dizaynı pozur, kodu avtotestlərlə yoxlamaq qeyri-mümkün olur və eyni məntiq təkrar-təkrar yazılırdı.

Laravel — 2011-ci ildə Teylor Otvel (Taylor Otwell) tərəfindən yaradılmış, PHP dilinin ən populyar və müasir veb freymvorkudur. O, zərif sintaksis, aydın arxitektur struktur və zəngin daxili alətlər dəsti təqdim edərək proqramçını rutin işlərdən azad edir və diqqəti birbaşa layihənin unikal funksionallığına yönəltməyə imkan verir.


1. MVC arxitekturası: öhdəliklərin bölünməsi

Laravel-in əsasını MVC (Model-View-Controller) dizayn şablonu təşkil edir. Bu şablon tətbiqi üç müstəqil təbəqəyə bölür:

  1. Model: Verilənlər bazası ilə qarşılıqlı əlaqəyə (Eloquent ORM vasitəsilə), biznes qaydalarına və məlumatların idarə olunmasına cavabdehdir. Model məlumatların istifadəçiyə necə göstəriləcəyindən xəbərsizdir.
  2. View (Görüntü): Yalnız istifadəçi interfeysi və məlumatların vizual təqdimatına cavabdehdir (Blade şablonları). Burada birbaşa SQL sorğuları və ya mürəkkəb biznes məntiqi yer almır.
  3. Controller (Nəzarətçi): İstifadəçi, model və görüntü arasında əlaqələndirici körpüdür. Marşrutlaşdırıcıdan gələn HTTP sorğusunu qəbul edir, modeldən lazımi məlumatları alır və onları görüntü şablonuna ötürür.
text
                 ┌──────────────┐
                 │  HTTP Sorğusu│
                 └──────┬───────┘
                        │
                        ▼
                 ┌──────────────┐
                 │Marşrutlaşdırıcı│ (routes/web.php)
                 └──────┬───────┘
                        │
                        ▼
                 ┌──────────────┐
                 │  Controller  │
                 └──────┬───────┘
                   │          ▲
1. Məlumat sorğusu │          │ 2. Obyektlər kolleksiyası
                   ▼          │
            ┌──────────┐ ┌──────────┐
            │  Model   │ │Verilənlər│
            └──────────┘ │  Bazası  │
                   │     └──────────┘
                   ▼ 3. Məlumatın şablona ötürülməsi
            ┌──────────────┐
            │  View (Blade)│
            └──────┬───────┘
                   │
                   ▼
            ┌──────────────┐
            │  HTTP Cavabı │ (Hazır HTML)
            └──────────────┘

2. Müqayisə: Prosedur PHP və Laravel arxitekturası

Gəlin real bir tapşırığa baxaq: verilənlər bazasından dərc olunmuş məqalələri oxumaq və başlıqlarını siyahı şəklində ekranda göstərmək.

Freymvorksuz prosedur PHP yanaşması (articles.php):

php
<?php
// Baza bağlantısı, SQL, məntiq və HTML-in tək faylda qarışması
$pdo = new PDO('mysql:host=127.0.0.1;dbname=blog;charset=utf8mb4', 'root', 'secret');
$stmt = $pdo->prepare('SELECT id, title, published_at FROM articles WHERE is_published = 1 ORDER BY published_at DESC');
$stmt->execute();
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html lang="az">
<head>
    <meta charset="UTF-8">
    <title>Məqalələr siyahısı</title>
</head>
<body>
    <h1>Bloq məqalələri</h1>
    <ul>
        <?php foreach ($articles as $article): ?>
            <li>
                <a href="/article.php?id=<?= (int)$article['id'] ?>">
                    <?= htmlspecialchars($article['title'], ENT_QUOTES, 'UTF-8') ?>
                </a>
            </li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

Laravel arxitekturası ilə təmiz yanaşma:

Laravel-də eyni tapşırıq dəqiq təbəqələrə bölünür:

  1. Marşrut (routes/web.php):
php
use App\Http\Controllers\ArticleController;
use Illuminate\Support\Facades\Route;

Route::get('/articles', [ArticleController::class, 'index'])->name('articles.index');
  1. Controller (app/Http/Controllers/ArticleController.php):
php
namespace App\Http\Controllers;

use App\Models\Article;
use Illuminate\Contracts\View\View;

class ArticleController extends Controller
{
    public function index(): View
    {
        $articles = Article::query()
            ->where('is_published', true)
            ->latest('published_at')
            ->get();

        return view('articles.index', [
            'articles' => $articles,
        ]);
    }
}
  1. Blade şablonu (resources/views/articles/index.blade.php):
blade
<x-layout title="Məqalələr siyahısı">
    <h1>Bloq məqalələri</h1>
    <ul class="space-y-2">
        @forelse ($articles as $article)
            <li>
                <a href="{{ route('articles.show', $article) }}" class="text-blue-600 hover:underline">
                    {{ $article->title }}
                </a>
            </li>
        @empty
            <li class="text-gray-500">Hələ heç bir məqalə yoxdur.</li>
        @endforelse
    </ul>
</x-layout>

3. Laravel-in daxili imkanları və üstünlükləri

Laravel layihənin ilk dəqiqələrindən etibarən tam təchiz olunmuş ("batteries-included") ekosistem təqdim edir:

KomponentHəll etdiyi vəzifə
Marşrutlaşdırma (Routing)URL-lərin kontrollerlərlə əlaqələndirilməsi, middleware, parametrlər və qruplaşdırma
Eloquent ORMCədvəllərlə PHP obyektləri kimi rahat işləmə, əlaqələr (hasMany, belongsTo), miqrasiyalar
Blade Şablonlarıİrsi struktur, komponentlər və avtomatik XSS təhlükəsizliyi təmin edən mühərrik
AutentifikasiyaQeydiyyat, şifrənin bərpası, iki mərhələli təhlükəsizlik və sessiya idarəetməsi
Növbələr və Tapşırıqlar (Queues)Vaxt aparan işlərin (e-poçt, PDF generasiyası, API zəngləri) fonda icra edilməsi
TəhlükəsizlikSQL Injection, CSRF və XSS hücumlarına qarşı daxili qorunma mexanizmləri
AvtotestlərPest və PHPUnit inteqrasiyası, HTTP sorğularının və verilənlər bazasının asan testi

4. Laravel ekosistemi

Laravel ətrafında müasir veb sənayesinin ən zəngin alətlər ekosistemi formalaşmışdır:

  • Laravel Herd: macOS və Windows üçün xüsusi PHP, Nginx, Node.js və baza mühitini təmin edən ən sürətli lokal tərtibat proqramı.
  • Laravel Forge & Cloud: Serverlərin avtomatik sazlanması və layihələrin bulud infrastrukturuna bir neçə kliklə yerləşdirilməsi aləti.
  • Laravel Livewire & Inertia.js: Mürəkkəb REST API yazmadan dinamik SPA interfeysləri qurmaq imkanı: Livewire təmiz PHP ilə reaktiv UI yaradır, Inertia isə Laravel-i Vue və ya React ilə birləşdirir.
  • Laravel Horizon & Pulse: Redis növbələrini, sorğu performansını və server yüklənməsini real vaxt rejimində izləyən qrafik panellər.

5. Buraxılış dövrü və müasir standartlar (Laravel 12, PHP 8.3+)

Laravel hər ilin birinci rübündə yeni əsas versiyasını təqdim edir:

  • Freymvork ən son PHP 8.3+ xüsusiyyətlərinə (tipləşdirilmiş xassələr, readonly siniflər, Enum tipləri, match operatoru, qısa konstruktorlar) əsaslanır.
  • Laravel 11 və 12-dən başlayaraq layihə strukturu daha da yığcamlaşdırılmışdır ("thin skeleton"): marşrutlar, middleware və istisnaların konfiqurasiyası bootstrap/app.php faylında cəmlənmişdir.

💡 Məsləhət: Laravel öyrənməklə siz sadəcə bir freymvork deyil, təmiz arxitektura, kibertəhlükəsizlik, dizayn şablonları və peşəkar kodlaşdırma mədəniyyətini mənimsəyirsiniz.