← Назад к курсу

Фремворк Laravel: текущая версия, ключевые возможности и нестандартные примеры

Обзор текущей версии Laravel 12

Laravel остаётся одним из самых популярных PHP‑фреймворков для создания современных веб‑приложений. Его ежегодные релизы добавляют новые возможности, улучшают производительность и поддерживают высокую степень совместимости с последними версиями PHP.

Параметр Значение
Название версии Laravel 12
Дата выпуска 24 февраля 2025 г. (поддерживается в 2026 г.)
Минимальная версия PHP 8.2 – 8.5
Срок поддержки баг‑фиксы до 13 августа 2026 г., security‑фиксы до 24 февраля 2027 г.

Ключевые нововведения Laravel 12

New Starter Kits

  • React, Vue и Livewire‑стеки с Inertia.js, TypeScript, Tailwind CSS и shadcn‑компонентами.
  • Вариант WorkOS AuthKit реализует социальную аутентификацию, passkeys и SSO (бесплатно до 1 млн MAU). | [2]

Минимальный риск нарушений совместимости

Laravel 12 ориентирован на backward‑compatibility; большинство приложений могут обновиться без изменения кода. | [2]

Производительность

  • Асинхронный кеш‑слой, оптимизированные запросы к базе, ускоренная обработка очередей и улучшенный memory‑manager. | [5]

Безопасность

  • Graceful encryption key rotation через APP_PREVIOUS_KEYS.
  • Обновлённые правила валидации (отказ от SVG по умолчанию). | [6]

Тестовые и отладочные улучшения

  • ddBody() — вывод полного тела ответа в функциональных тестах.
  • Arr::partition() — разбивка массивов без коллекций. | [6]

Новые вспомогательные методы

  • Model::except() — возврат атрибутов без указанных ключей.
  • Uri::pathSegments() — получение сегментов URL как коллекции.
  • Http::requestException() — упрощённый способ создания HTTP‑исключений в тестах. | [6]

Прочие полезные детали

  • Health check endpoint /up встроен в фреймворк.
  • Per‑second rate limiting через Limit::perSecond().
  • JSON:unicode cast сохраняет неэкранированные Unicode‑символы в JSON‑атрибутах. | [6]

Практические реализации и примеры

Интеграция с WorkOS AuthKit

// routes/api.php
use Laravel\WorkOS\AuthKit\SocialProviders\Google;

Route::post('/login', function (Request $request) {
    $token = $request->input('access_token');
    $user = SocialAuth::fromGoogle($token);
    // сохраняем/аутентифицируем пользователя
});

Полный пример доступен в официальной документации по starter kits. | [2]

Laravel Horizon + асинхронные задачи

use Horizon\Horizon;
use App\Jobs\ProcessPodcast;

Horizon::queue('emails')->useBox('high')->retryUntil(300);

public function handle(): void
{
    // логика отправки письма
}

Horizon предоставляет UI‑мониторинг, автоматический retry и динамическое масштабирование. | [5]

Livewire 3 + динамический пререндеринг

<livewire:dynamic-form>
    @foreach($items as $item)
        <div wire:key="$item.id">
            {{-- рендеринг только изменённых частей --}}
        </div>
    @endforeach
</livewire:dynamic-form>

Livewire 3 уменьшает объём JavaScript и ускоряет реакцию UI. | [2]

Laravel Octane с Swoole

$app = app('octane');
$response = $app->run(function (Request $request) {
    // быстрая обработка с использованием Swoole
});

Octane позволяет выполнять запросы без перезапуска PHP‑процесса, уменьшая латентность. | [5]

Кастомный Artisan‑командный bulk‑insert

use Illuminate\Console\Command;
use App\Models\Product;

class BulkCreateProducts extends Command
{
    protected $signature = 'products:bulk {count=100}';
    protected $description = 'Insert many products in a single transaction';

    public function handle(): int
    {
        Product::fill($this->argument('count')->items())
               ->each(fn($p) => $p->save());

        return 0;
    }
}

Обработка без лишних запросов к БД, атомарная транзакция. | [3]

Eloquent whereAttachedTo для many‑to‑many

$tags = Tag::where('created_at', '>', now()->subMonth())->get();
$posts = Post::whereAttachedTo($tags)->get();

Упрощает запросы к Many‑to‑Many связям. | [6]

Тестовое использование Arr::partition и ddBody()

$numbers = [1,2,3,4,5,6];
[$evens, $odds] = Arr::partition($numbers, fn($n) => $n % 2 === 0);
$response = $this->get('/api/data');
$response->ddBody(); // выводит весь JSON‑ответ

Полезно в unit‑тестах для быстроты анализа данных. | [6]

JSON:unicode cast

class Post extends Model
{
    protected $casts = [
        'payload' => 'json:unicode',
    ];
}

Сохраняет кириллические и эмоциональные символы без экранирования. | [6]

Model::except() и Uri::pathSegments()

$user->except(['password', 'remember_token']);
$segments = Uri::pathSegments('/api/v1/users/42/profile');

Удобные помощники для фильтрации данных и работы с URL. | [6]

HTTP Request Exception в тестах

$exception = Http::requestException(['code' => 'not_found'], 404);

Упрощает создание mock HTTP‑исключений. | [6]

Рекомендации по миграции с Laravel 11 на Laravel 12

  1. Проверьте зависимости: убедитесь, что все пакеты совместимы с PHP 8.2‑8.5.
  2. Запустите полные тест‑сейзы: уделите особое внимание Carbon‑3, _hasUuids, и изменениям в контейнере.
  3. Обновите composer.json: laravel/framework: ^12.0.
  4. Выполните миграцию: php artisan migrate.
  5. Тестируйте health‑endpoint /up в продакшн‑окружении.
  6. Проверьте правила валидации на потенциальные изменения в Carbon. | [4]

Перспективы: Laravel 13

  • Планируется требовать PHP 8.3+.
  • Ожидается ещё более агрессивная оптимизация производительности и сокращение legacy‑совместимости.
  • Возможные новые возможности: встроенный GraphQL‑клиент, улучшенный Reverb для WebSocket‑нагрузок. | [7]

Выводы и обсуждение

Laravel 12 представляет собой стабильную, активно поддерживаемую платформу, которая сочетает минимум‑breaking‑changes с набором современных инструментов (React/Vue/Livewire starter kits, WorkOS AuthKit, Octane, Horizon). Это делает её привлекательным выбором как для новых проектов, так и для существующих приложений, планирующих масштабирование. При этом важно учитывать особенности миграции и потенциальные зоны совместимости, описанные в рекомендациях по обновлению.

Заключение

Laravel 12 остаётся одним из ведущих PHP‑фреймворков благодаря длительной поддержке (bug‑fixes до 2026 г., security‑fixes до 2027 г.) и широкому экосистемному набору первостепенных решений. Принятие новых возможностей и следование рекомендациям по переходу позволяют максимально использовать преимущества платформы без риска для существующего кода.

Источники

  1. Laravel 12 Release Notes: https://laravel.com/docs/12.x/releases
  2. Laravel 12 for Enterprise (2026) What Changed What to Upgrade What to Ignore: https://itmarkerz.co.in/blog/laravel-12-for-enterprise-2026-what-changed-what-to-upgrade-what-to-ignore
  3. Laravel 12 is Now Released: https://laravel-news.com/laravel-12
  4. Laravel Versions: https://laravelversions.com/en
  5. Laravel 12 Overview: https://www.cloudways.com/blog/laravel-12/
  6. Exploring Laravel 12 New Features and Upgrade Guide: https://www.lucentinnovation.com/resources/technology-posts/laravel-12-updates
  7. Laravel end of life: https://endoflife.date/laravel