Экосистема Laravel развивается с молниеносной скоростью, и Ларавел 13- планируется к выпуску 17 марта 2026 г.— обещает стать одним из самых усовершенствованных обновлений. Официально представленный Тейлором Отвеллом на Laracon EU, Laravel 13 не преследует цели изобретать велосипед или вносить масштабные кардинальные изменения. Вместо этого он уделяет большое внимание опыт разработчика (DX), современные функции PHP 8.3 и улучшения качества жизни..
Если вам интересно, что изменилось и как использовать новые функции, вы попали по адресу. Давайте углубимся во все, что появится в Laravel 13, с практическими примерами кода.
1. Великий пересмотр атрибутов PHP
Главной особенностью Laravel 13 является глубокое внедрение всей платформы. Атрибуты PHP 8. Исторически компоненты Laravel (модели, задания, команды) настраивались с использованием защищенных свойств. Теперь вы можете настроить практически все, используя чистые декларативные атрибуты прямо над объявлениями классов.
*Примечание: это 100% аддитивное, некритическое изменение. Если вы предпочитаете старый подход, основанный на свойствах, он продолжит работать отлично! *
Красноречивые модели
Теперь вы можете определять имена таблиц, скрытые атрибуты, заполняемые атрибуты и многое другое, не загромождая внутреннюю часть вашего класса.
Раньше (Laravel 12):
class User extends Model
{
protected $table = 'system_users';
protected $primaryKey = 'user_id';
public $incrementing = false;
protected $keyType = 'string';
protected $fillable = ['name', 'email'];
protected $hidden = ['password', 'remember_token'];
}
После (Laravel 13):
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Attributes\Table;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden;
#[Table('system_users', key: 'user_id', keyType: 'string', incrementing: false)]
#[Fillable(['name', 'email'])]
#[Hidden(['password', 'remember_token'])]
class User extends Model
{
// The class body is beautifully empty!
}
Доступные атрибуты модели в Laravel 13 включают: #[Appends] , #[Connection] , #[Guarded] , #[Touches] , #[Unguarded] , и #[Visible] .
Очередь заданий
Конфигурация очереди прекрасно транслируется в атрибуты. Вместо общедоступных свойств, которые кажутся не связанными с сигнатурой класса, вы объявляете конфигурацию вверху.
Пример работы Laravel 13:
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\Connection;
use Illuminate\Queue\Attributes\Queue;
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Timeout;
use Illuminate\Queue\Attributes\Backoff;
#[Connection('redis')]
#[Queue('long_running_tasks')]
#[Tries(5)]
#[Timeout(120)]
#[Backoff([10, 30, 60])] // Retry after 10s, then 30s, then 60s
class ProcessPodcast implements ShouldQueue
{
public function handle()
{
// Process the heavy lifting...
}
}
Консольные команды
Команды Artisan также получают обработку атрибутов. Вам больше не нужно определять $signature и $description характеристики.
use Illuminate\Console\Command;
use Illuminate\Console\Attributes\Signature;
use Illuminate\Console\Attributes\Description;
#[Signature('reports:generate {user} {--queue}')]
#[Description('Generate a monthly analytics report for a specific user.')]
class GenerateReportCommand extends Command
{
public function handle()
{
$user = $this->argument('user');
// ...
}
}
Другие компоненты платформы
Атрибуты распространяются повсюду:
- Форма запросов:
#[RedirectTo('/dashboard')]или#[StopOnFirstFailure] - Ресурсы API:
#[Collects(User::class)]или#[PreserveKeys] - Фабрики и сеялки:
#[UseModel(User::class)]или#[Seed]
2. Cache::touch() Метод
Значительным выигрышем в производительности для приложений с высоким трафиком является введение Cache::touch() .
Раньше, если вы хотели продлить срок жизни (TTL) кэшированного элемента, вам нужно было получить полезные данные из хранилища кэша, а затем поместить их обратно. Это приводило к ненужному использованию памяти и передаче данных по сети, особенно для больших кэшированных объектов.
Laravel 13 полностью обходит эту проблему, используя собственные команды хранилища кэша (например, Redis EXPIRE или Memcached TOUCH ).
Старый способ (медленно):
// Grabs the whole payload over the network
$payload = Cache::get('heavy_analytics_dashboard');
// Sends the whole payload back over the network
Cache::put('heavy_analytics_dashboard', $payload, now()->addHours(6));
Путь Laravel 13 (Сверхбыстро):
use Illuminate\Support\Facades\Cache;
// Simply extends the TTL without fetching the payload!
Cache::touch('heavy_analytics_dashboard', now()->addHours(6));
// You can also pass seconds:
Cache::touch('user_session:123', 3600);
// Or extend indefinitely:
Cache::touch('permanent_report', null);
Примечание: Cache::touch() возвращает true об успехе и false если ключ не существует.
3. Laravel Reverb: драйвер базы данных
Laravel Reverb привнес в экосистему невероятно быстрые собственные WebSockets. Однако для горизонтального масштабирования Reverb на нескольких серверах вы ранееимелиспользовать Redis для управления обменом сообщениями Pub/Sub между узлами.
В Laravel 13 Reverb представляет Драйвер базы данных. Если вы создаете приложение малого и среднего размера и хотите избежать затрат на инфраструктуру и сложности развертывания выделенного экземпляра Redis, теперь вы можете использовать существующую базу данных MySQL или PostgreSQL для масштабирования функций в реальном времени!
# In your .env file
REVERB_CONNECTION=database
Это снижает барьер для доступа к масштабируемым приложениям Laravel, работающим в реальном времени.
4. Стартовые наборы: первоклассные команды и собственные ключи доступа.
Встроенные возможности Teams
Если вы используете SaaS, вы знаете, как тяжело создавать многопользовательскую систему Teams. Раньше это было привязано именно к Jetstream. В Laravel 13 официальные стартовые наборы вновь представляют значительно улучшенную функциональность Teams. Это позволит пользователям одновременно действовать от имени разных команд через разные URL-адреса (даже на разных вкладках браузера), не сталкиваясь с конфликтами сеансов.
Собственная аутентификация с паролем
WebAuthn (ключи доступа) изначально интегрирован непосредственно в Laravel Fortify и стартовые комплекты. Ваши пользователи могут безопасно входить в систему с помощью Face ID, Touch ID или аппаратных ключей безопасности, что позволяет вам отказаться от сложных сторонних пакетов WebAuthn.
5. Детальный контроль очереди заданий
Laravel 13 обеспечивает более детальный контроль над неудачными заданиями, особенно с помощью maxExceptions конфигурация. Если задание взаимодействует с нестабильным сторонним API, теперь вы можете точно указать, сколько исключений разрешено до полного сбоя задания, что дает вам более жесткий контроль над пороговыми значениями повторных попыток.
use Illuminate\Queue\Attributes\MaxExceptions;
#[MaxExceptions(3)] // Fails permanently if it throws 3 exceptions!
class SyncWithUnstableApi implements ShouldQueue
{
// ...
}
6. Laravel AI SDK достиг стабильности
Впервые представленный как бета-версия, Laravel AI SDKбудет официально отмечен как стабильный с выпуском Laravel 13.
Этот SDK действует как официальная элегантная оболочка таких поставщиков, как Anthropic, OpenAI и Google Gemini. Он предоставляет вам свободный синтаксис, подобный Eloquent, для взаимодействия с моделями большого языка, что позволяет легко встраивать возможности искусственного интеллекта в ваше приложение, не беспокоясь о HTTP API базового провайдера.
7. Под капотом: PHP 8.3 и параллелизм по умолчанию
В то время как улучшения DX находятся в центре внимания, Laravel 13 также привносит тепло под капот:
- Минимальные требования PHP 8.3:Пришло время обновиться! В Laravel 13 прекращена поддержка PHP 8.2. Вы должны использовать PHP 8.3+, чтобы инфраструктура могла полностью использовать константы типизированных классов, динамическую выборку констант классов и новые функции стандартной библиотеки.
- Symfony 7.4 и 8.0 Foundation:Базовые компоненты Symfony были изменены, что обеспечивает безопасность фреймворка в будущем.
- Параллелизм HTTP-клиента:
Http::pool()теперь по умолчанию используется уровень параллелизма2Это означает, что массовые запросы API через пул будут выполняться одновременно без какой-либо дополнительной настройки.
use Illuminate\Support\Facades\Http;
use Illuminate\Http\Client\Pool;
// Executes concurrently automatically in Laravel 13!
$responses = Http::pool(fn (Pool $pool) => [
$pool->get('https://api.example.com/endpoint-1'),
$pool->get('https://api.example.com/endpoint-2'),
]);
Заключение и график обновления
Laravel 13 — это определение зрелой среды: отсутствие критических изменений в коде вашего приложения, дополнительные функции DX и глубокая оптимизация производительности.
Важные даты:
- Дата выпуска:17 марта 2026 г.
- Исправления ошибок:Поддерживается до третьего квартала 2027 г.
- Исправления безопасности:Поддерживается до первого квартала 2028 г.
Путь обновления будет исключительно гладким. Независимо от того, примете ли вы новые атрибуты PHP сразу или придерживаетесь свойств, Laravel 13 готов продвигать экосистему вперед. Начните подготовку своих серверов к PHP 8.3 уже сегодня!