Ой, ничего не найдено!

К сожалению, по вашему запросу пока ничего нет (но это только пока!), зато вы можете подписаться на нашу замечательную email-рассылку, чтобы не пропустить самое интересное в будущем.

  • 465

Laravel 12: Нововведения и улучшения

  • 20 минут на чтение

Laravel 12 – это очередной мажорный релиз популярного PHP-фреймворка, вышедший в феврале 2025 года. В этой версии разработчики сосредоточились на улучшении существующих компонентов и упрощении процесса разработки, без радикальных изменений, нарушающих совместимость (Laravel 12 и Laravel Cloud | Laravel Russian Community) (Everything we know about Laravel 12 - Laravel News). Рассмотрим подробно, что нового появилось в Laravel 12, включая изменения в архитектуре, новые возможности фреймворка, улучшения безопасности и производительности, а также сравним его с Laravel 11. В конце мы приведем примеры кода, демонстрирующие новые функции.

Изменения в архитектуре

Новые стартовые наборы (Starter Kits). Одним из ключевых архитектурных изменений Laravel 12 стало появление новых официальных стартовых наборов приложений для React, Vue и Livewire (Laravel 12. Что нового? / Хабр). Эти наборы предоставляют готовый каркас проекта с настроенным фронтендом и бэкендом, включая систему аутентификации пользователей. В качестве фронтенд-стека используются современные инструменты – для React и Vue задействованы Inertia 2, TypeScript, библиотека компонентов shadcn/ui и Tailwind CSS, а для Livewire – набор компонентов Flux UI на базе Tailwind и новый фреймворк Laravel Volt (Laravel 12. Что нового? / Хабр).

Новые стартовые шаблоны устанавливаются из отдельных репозиториев GitHub и прямо добавляются в код вашего приложения, а не скрыты внутри пакетов в директории vendor (Everything we know about Laravel 12 - Laravel News) (Laravel 12 и Laravel Cloud | Laravel Russian Community). Это означает, что разработчик получает полный контроль над сгенерированным кодом и может гибко его изменять под свои нужды. Также появился вариант стартового набора с интеграцией WorkOS AuthKit для аутентификации – он позволяет легко настроить социальный вход, использование ключей безопасности (passkeys) и SSO (единого входа) (Release Notes - Laravel 12.x - The PHP Framework For Web Artisans) (Laravel 12. Что нового? / Хабр). В результате появления этих универсальных шаблонов прежние пакеты Laravel Breeze и Jetstream объявлены устаревшими и больше не будут получать обновлений (Laravel 12. Что нового? / Хабр).

Обновление структуры проекта. Laravel 12 унаследовал более упрощенную и стройную структуру каталогов, впервые представленную в Laravel 11 (Laravel 11 is now released! - Laravel News). Новая структура делает проект «легче» – удалены или объединены некоторые служебные файлы и каталоги, что облегчает навигацию по коду. Например, контроллеры теперь по умолчанию не наследуют базовый класс, а настройки промежуточного ПО (middleware) вынесены из отдельной папки непосредственно в сервис-провайдеры приложения (Laravel 11 is now released! - Laravel News). В Laravel 12 такая оптимизированная архитектура сохранена и развита дальше: конфигурационные файлы стали интуитивно понятнее, что упрощает начальную настройку приложения (Laravel 12 - New Features And Latest Updates). Это особенно полезно для команд разработчиков – новым участникам проще разобраться в структуре проекта и приступить к работе. Таким образом, архитектура Laravel 12 способствует тому, чтобы даже крупные приложения оставались организованными и поддерживаемыми.

Обновление зависимостей. В Laravel 12 произведено обновление ряда базовых библиотек и зависимостей фреймворка до актуальных версий (Everything we know about Laravel 12 - Laravel News). В частности, прекращена поддержка библиотеки даты и времени Carbon 2, вместо неё теперь используется Carbon 3 (Laravel 12. Что нового? / Хабр), что может потребовать обновления кода, если приложение явно зависело от старой версии. Кроме того, Laravel 12 требует PHP не ниже версии 8.2 (такая же минимальная версия, как и у Laravel 11) и поддерживает актуальные на момент релиза версии PHP (включая 8.3 и 8.4) (Release Notes - Laravel 12.x - The PHP Framework For Web Artisans). Также обновлён установщик Laravel Installer для поддержки установки новой версии и упомянутых стартовых шаблонов (Laravel 12. Что нового? / Хабр). В остальном же архитектура ядра фреймворка осталась стабильной – как и обещано, никаких переломных изменений в устройстве Laravel не произошло (Laravel 12 и Laravel Cloud | Laravel Russian Community).

Новые возможности

Несмотря на то, что Laravel 12 позиционируется как «поддерживающий» релиз с минимальным количеством критических изменений, в нём присутствует ряд новых возможностей и функций, повышающих продуктивность разработки и упрощающих решение распространённых задач.

Начните с нами: 6 месяцев бесплатного хостинга!
Используйте промокод FREE6MONTH и раскройте потенциал своего сайта без финансовых вложений.

1. Готовые шаблоны проектов с фронтендом. Новые Starter Kits, описанные выше, можно рассматривать и как архитектурное изменение, и как новую возможность. Разработчики Laravel 12 фактически объединяют процесс настройки фронтенда и бэкенда, позволяя при создании проекта сразу выбрать стек – React, Vue или Livewire – и получить готовый скелет приложения. В шаблоны встроена базовая аутентификация (регистрация, вход, сброс пароля, подтверждение email и т.д.), поэтому разработчики могут из коробки получить типовой функционал, не тратя время на ручную настройку. Также доступна опция интеграции AuthKit от WorkOS для ещё более продвинутых сценариев аутентификации (OAuth, соцсети, ключи безопасности) (Release Notes - Laravel 12.x - The PHP Framework For Web Artisans). Такой подход упрощает старт новых проектов и снижает порог входа для начинающих разработчиков.

2. GraphQL и версионирование API. Laravel 12 делает разработку API более мощной и гибкой, впервые предоставляя родную поддержку GraphQL и удобные средства версионирования API ( What's New in Laravel 12: An Comprehensive Overview ) (Laravel 12 - New Features And Latest Updates). GraphQL позволяет запрашивать на сервере только необходимые данные единым запросом вместо множества REST-эндпоинтов, что уменьшает объем передаваемой информации и ускоряет ответы. Теперь в Laravel можно из коробки использовать GraphQL для организации API, не устанавливая сторонних пакетов, что упрощает создание сложных и производительных API-интерфейсов. Помимо этого, введён новый синтаксис для версионирования API: маршруты разных версий можно группировать более элегантно. Например, вместо прописывания префикса версии в каждом маршруте (/api/v1/...) можно использовать метод Route::apiVersion() для группировки роутов определенной версии ( What's New in Laravel 12: An Comprehensive Overview ). Это делает код маршрутов чище и облегчает поддержку нескольких версий API.

3. Расширения в ORM Eloquent и Query Builder. В Laravel 12 улучшена работа с базой данных. Добавлены новые методы, упрощающие написание сложных запросов и работу с отношениями между моделями. В Query Builder появился метод nestedWhere(), позволяющий компактно формулировать составные условия без громоздких вложенных функций-замыканий (Laravel 12: New Features & Upgradation Guide) (Laravel 12: New Features & Upgradation Guide). Этот метод группирует условия в блок, что делает сложные запросы более читаемыми. В самом Eloquent также добавлены возможности фильтрации загружаемых отношений. К примеру, метод withFiltered() позволяет подгружать связанные модели с условием, без необходимости писать функцию-замыкание с where внутри with ( What's New in Laravel 12: An Comprehensive Overview ). Это снижает объем шаблонного кода и риск ошибок при работе с отношениями. Кроме того, улучшены механизмы условной eager-загрузки (т.е. загрузки связей только при выполнении определённых условий) и наложения ограничений на отношения прямо в определении моделей ( What's New in Laravel 12: An Comprehensive Overview ). Все эти нововведения делают работу с базой данных более удобной и эффективной.

4. Усовершенствования для разработчиков. Laravel 12 включает ряд улучшений, направленных на повышение удобства разработки (developer experience). Во-первых, появился объединённый механизм генерации типового кода (scaffolding). Ранее для создания модели вместе с миграцией, фабрикой и контроллером нужно было вызывать Artisan с несколькими флагами или даже выполнять несколько команд. Теперь же добавлена команда php artisan scaffold, позволяющая одной командой сгенерировать сразу набор связанных классов для новой сущности ( What's New in Laravel 12: An Comprehensive Overview ) (Laravel 12: New Features & Upgradation Guide). Например, php artisan scaffold Product создаст модель Product, миграцию для таблицы, контроллер и другие сопутствующие файлы за один шаг. Это экономит время и сокращает количество ошибок при настройке типового CRUD-функционала. Также Laravel 12 полнее использует возможности PHP 8 в синтаксисе. Например, в типовом коде контроллеров и сервисов теперь применяется promotion-свойств в конструкторах (property promotion) для автоматического присвоения переданных зависимостей свойствам класса ( What's New in Laravel 12: An Comprehensive Overview ). Это уменьшает шаблонный код при внедрении зависимостей: вместо нескольких строк присваивания достаточно объявить переменную в сигнатуре конструктора. В целом, типовой код стал лаконичнее и чище. Ещё одно улучшение – улучшенная система сообщений об ошибках. Добавлена новая страница исключений по умолчанию (error page) с поддержкой темной темы, которая была представлена ещё в ветке Laravel 11.x (Everything we know about Laravel 12 - Laravel News). В Laravel 12 она доработана, а также появились более понятные диагностические сообщения, помогающие быстрее понять причину ошибки. Кроме того, в среде разработки Laravel теперь выполняет автоматическое линтинг-проверки кода (real-time linting) при запуске artisan команд либо с помощью встроенных инструментов, что позволяет раньше выявить синтаксические и некоторые логические ошибки ( What's New in Laravel 12: An Comprehensive Overview ). Все эти мелочи направлены на то, чтобы ускорить цикл разработки и уменьшить время на отладку.

5. AI-помощник отладки (экспериментально). Инновационной (и несколько неожиданной) функцией Laravel 12 стал встроенный ассистент отладки на основе ИИ. При возникновении ошибок этот инструмент может анализировать контекст выполнения и предлагать разработчику рекомендации для их исправления ( What's New in Laravel 12: An Comprehensive Overview ) (Laravel 12 - New Features And Latest Updates). Предполагается, что с его помощью можно сократить время на поиск причин ошибки и получить подсказки по оптимальному решению. Например, появился метод debug()->suggest(), который при отладке переменной не только выводит её значение, но и сразу дает совет, где может быть проблема ( What's New in Laravel 12: An Comprehensive Overview ). Хотя эта возможность ещё не стала центральной в экосистеме Laravel, она демонстрирует стремление фреймворка использовать современные технологии (машинное обучение) для повышения продуктивности разработчиков.

6. Другие улучшения. Среди прочих новых возможностей Laravel 12 можно отметить обновлённый пакет Laravel Octane для лучшей поддержки долгоживущих процессов и масштабирования, улучшенную поддержку WebSocket-соединений и событий реального времени (что продолжает развитие, начатое с появлением пакета Laravel Reverb в версии 11 (Laravel 11 is now released! - Laravel News)), а также интеграцию с сервисом Laravel Cloud (представлен одновременно с релизом 12) для деплоя и мониторинга приложений в облаке. Все это делает экосистему Laravel ещё более целостной и готовой к решению широкого круга задач веб-разработки.

Начните с нами: 6 месяцев бесплатного хостинга!
Используйте промокод FREE6MONTH и раскройте потенциал своего сайта без финансовых вложений.

Улучшения безопасности

Безопасность веб-приложений остаётся одним из приоритетов Laravel, и в версии 12 были введены новые меры для усиления защиты по умолчанию.

Новые правила валидации. Добавлен удобный метод secureValidate() для валидирования входящих данных запросов ( What's New in Laravel 12: An Comprehensive Overview ) (Laravel 12 - New Features And Latest Updates). Он расширяет стандартный $request->validate(), автоматически применяя дополнительные проверки безопасности. В частности, Laravel 12 из коробки поддерживает более строгие политики паролей. Теперь можно легко указать, что пароль должен соответствовать требованиям надежности (например, содержать цифры, спецсимволы, иметь длину и т.д.) – для этого введено условие strong в правилах валидации пароля ( What's New in Laravel 12: An Comprehensive Overview ). В старых версиях разработчикам приходилось самостоятельно добавлять подобные правила или использовать кастомные объекты правил, теперь же фреймворк предоставляет готовое решение. В результате пароли и другие чувствительные данные проверяются более тщательно, снижая риск простых паролей и уязвимостей, связанных с ними.

Кроме того, изменилось поведение некоторых стандартных правил валидации: например, правило image больше не разрешает SVG-файлы по умолчанию (Laravel 12. Что нового? / Хабр). Это связано с потенциальными угрозами XSS через внедрение вредоносных скриптов в SVG. Если приложению требуется загружать SVG-изображения, разработчик должен явным образом указать это (image:allow_svg), что заставляет осознанно разрешать этот тип файлов. Такой подход «безопасность по умолчанию» уменьшает вероятность пропуска опасного сценария.

Шифрование и хранение паролей. Laravel 12 обновляет внутренние протоколы шифрования до более современных стандартов ( What's New in Laravel 12: An Comprehensive Overview ). Это означает использование актуальных алгоритмов для функции хэширования паролей и шифрования конфиденциальных данных. Улучшения в Hash API делают хранение паролей пользователей ещё более надёжным – например, используются более стойкие схемы хэширования по умолчанию, учитывающие рекомендации по защите от атак перебора. Также, благодаря интеграции с WorkOS AuthKit, стало проще внедрять аутентификацию без хранения паролей в системе (через внешних OAuth-провайдеров), что положительно сказывается на безопасности приложения, разгружая его от лишней ответственности за хранение учетных данных пользователей.

Защита от распространённых уязвимостей. Фреймворк усилил встроенную защиту от XSS и SQL-инъекций. Laravel и раньше автоматически экранировал вывод переменных в шаблонах Blade и использовал привязку параметров в SQL-запросах, но в версии 12 были добавлены дополнительные проверки и фильтры в промежуточном слое (middleware) для выявления подозрительных входных данных (Laravel 12: New Features & Upgradation Guide). Например, обновлены посредники, отвечающие за проверку входящих запросов, чтобы блокировать некоторые известные вредоносные шаблоны ввода до того, как они достигнут логики приложения. Улучшена и защита от CSRF: токены стали еще более сложными и долговечными, а механизм их проверки – более строгим (при этом для разработчика эти изменения прозрачны).

Управление сессиями и OAuth. Механизмы аутентификации и управления сессиями в Laravel 12 были улучшены для защиты от угонов сессий и несанкционированного доступа (Laravel 12 - New Features And Latest Updates). Обновление коснулось генерации и хранения токенов доступа: введены улучшенные политики истечения (expiration) токенов и расширена поддержка OAuth2 для сторонних авторизационных сервисов. Например, при использовании Laravel Sanctum или Passport в Laravel 12 из коробки доступны более безопасные настройки – такие как ограничение количества активных токенов на пользователя, принудительное отзыва старых токенов при смене пароля и т.д. Все это повышает общий уровень безопасности приложений на Laravel 12 без дополнительного кода. В совокупности эти изменения делают Laravel 12 одним из самых безопасных релизов. По умолчанию приложению задается высокая планка защиты, и даже если разработчик забывает о каких-то мерах, фреймворк старается подстраховать его, применяя безопасные настройки по умолчанию ( What's New in Laravel 12: An Comprehensive Overview ).

Специальное предложение: бесплатный хостинг на полгода!
Введите промокод FREE6MONTH при регистрации и наслаждайтесь надежным хостингом бесплатно.

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

Разработчики Laravel 12 проделали работу над оптимизацией производительности фреймворка, чтобы приложения работали быстрее и масштабировались легче. Хотя кардинальных перестроек не было, ряд точечных улучшений ускоряют выполнение кода, работу с базой данных и обработку фоновых задач.

Кэширование и сессии. Laravel 12 вводит поддержку асинхронных операций кэширования. В предыдущих версиях методы работы с кэшем были синхронными – например, при использовании Cache::remember выполнение запроса могло ждать, пока данные запишутся в кэш ( What's New in Laravel 12: An Comprehensive Overview ) ( What's New in Laravel 12: An Comprehensive Overview ). Теперь же появились методы вроде Cache::asyncRemember, позволяющие выполнять кэширование в фоновом режиме, не блокируя основной поток приложения ( What's New in Laravel 12: An Comprehensive Overview ). Это особенно полезно в приложениях с высокой нагрузкой на кэш (например, когда множество запросов одновременно пытаются обновить разные части кеша) – благодаря асинхронности снижается время ожидания и увеличивается пропускная способность сервера. Кроме того, оптимизирован сам драйвер кэширования и работы с сессиями: улучшено взаимодействие с бекенд-хранилищами (Redis, Memcached), за счет чего операции чтения/записи выполняются быстрее.

Оптимизация запросов к базе данных. Компонент Query Builder стал умнее использовать возможности конкретных СУБД, уменьшая избыточные вычисления и количество выполняемых запросов ( What's New in Laravel 12: An Comprehensive Overview ). Например, если раньше сложные условия могли приводить к генерации неэффективного SQL, то теперь Laravel старается формировать запросы оптимальным образом. В сочетании с новыми методами вроде nestedWhere() (о котором упоминалось ранее) это позволяет писать запросы, которые не только проще читаются, но и работают быстрее. Также внесены микроптимизации в загрузку отношений Eloquent: когда вы запрашиваете связанные модели, Laravel 12 делает это более аккуратно, сокращая количество SQL-запросов там, где это возможно, через механизмы жадной загрузки (eager loading) и интеллектуального кеширования отношений. В итоге, при работе с большими объемами данных Laravel 12 проявляет лучшую производительность по сравнению с предыдущими версиями.

Использование JIT-компиляции PHP 8. Laravel 12 полностью совместим с механизмом Just-In-Time (JIT) компиляции в PHP 8, и его внутренний код написан с учетом получения максимальной выгоды от JIT ( What's New in Laravel 12: An Comprehensive Overview ). JIT-компилятор позволяет PHP выполнять часто вызываемый код на более низком уровне (машинном), минуя интерпретатор, что значительно ускоряет повторяющиеся операции. В Laravel 12 критически важные участки (например, ядро маршрутизации, обработка событий) выигрывают от этого, обеспечивая более высокую скорость выполнения. В тестах производительности отмечается ускорение загрузки страниц и ответа API под нагрузкой в Laravel 12 по сравнению с Laravel 11, во многом благодаря оптимизациям на уровне PHP 8.

Улучшение очередей и фоновых задач. В Laravel 12 переработана система очередей (jobs) для лучшего управления задачами в реальном времени. Появилась динамическая приоритизация задач: теперь фреймворк может автоматически давать более высокий приоритет критически важным заданиям в очереди, обходя задачи с низким приоритетом ( What's New in Laravel 12: An Comprehensive Overview ). Это означает, например, что задача по отправке срочного уведомления может выполняться раньше длительной задачи генерации отчета, даже если была поставлена позже, без дополнительной ручной настройки. Также улучшены механизмы повторных попыток (retry) для неудавшихся задач – Laravel 12 гибче определяет интервалы повторных запусков, стараясь быстрее обработать временные ошибки и не задерживать очередь ( What's New in Laravel 12: An Comprehensive Overview ) ( What's New in Laravel 12: An Comprehensive Overview ). В дополнение к этому, мониторинг очередей стал информативнее: Laravel Horizon (панель управления очередями) обновлен для более детального отслеживания состояния задач, времени выполнения и т.д. Все это повышает пропускную способность системы фоновых задач и обеспечивает стабильную работу под нагрузкой.

Масштабирование в реальном времени. Laravel 12 продолжает курс на поддержку реактивных, реального времени приложений. Благодаря появлению Laravel Reverb в версии 11, фреймворк получил собственный высокопроизводительный WebSocket-сервер (Laravel 11 is now released! - Laravel News). В Laravel 12 этот инструмент развили: оптимизирована обработка WebSocket-подключений (уменьшены накладные расходы на установление соединений, убраны лишние периоды ожидания), а также улучшена интеграция с механизмом Laravel Echo для клиентской части. События вещания (broadcasting) рассылаются с минимальными задержками, что делает обновление данных на клиентах практически мгновенным. Эти улучшения особенно заметны в приложениях с большим числом одновременных пользователей, где нагрузка на real-time канал высока (чаты, онлайн-игры, панели мониторинга и пр.) – Laravel 12 справляется с этим эффективнее, чем предшественники.

Эксклюзивно для читателей: полгода бесплатного хостинга!
Заберите свой промокод FREE6MONTH и воспользуйтесь всеми преимуществами премиум-хостинга бесплатно.

Совокупность всех этих усовершенствований делает Laravel 12 более быстрым и масштабируемым. По оценкам, приложения на Laravel 12 смогут выдерживать бóльшие нагрузки «из коробки», а разработчикам потребуется меньше времени на ручную оптимизацию кода для достижения требуемой производительности (Laravel 12 - New Features And Latest Updates).

Сравнение с Laravel 11

Чтобы понять значимость изменений Laravel 12, важно увидеть, чем он отличается от предыдущего выпуска, Laravel 11.

Минимум ломающих изменений. Главная особенность Laravel 12 – отсутствие радикальных переработок и break-changes. В то время как Laravel 11, вышедший годом ранее (в марте 2024), привнес заметные изменения в структуру и требования (например, требовал PHP 8.2, обновил скелет приложения, убрал ряд стандартных файлов и добавил новые возможности) (Laravel 11 is now released! - Laravel News), Laravel 12 оказался поддерживающим релизом. Taylor Otwell (создатель Laravel) заранее предупредил, что 12-я версия будет в основном техническим обновлением с минимальными критическими изменениями (Everything we know about Laravel 12 - Laravel News). Это обещание выдержано: большинство проектов на Laravel 11 можно обновить до Laravel 12 практически без изменения собственного кода (Everything we know about Laravel 12 - Laravel News). Процесс обновления обычно сводится к изменению номера версии фреймворка в composer.json и обновлению зависимостей, а также небольшим правкам из руководства по обновлению (например, переход на Carbon 3 и обновление Laravel Installer, как упоминалось выше).

Новые возможности против старых. Laravel 11 сам по себе был богаче на нововведения по сравнению с Laravel 10. В версии 11 появились: кардинально переработанная структура каталогов проекта (на 11-й версии новый проект содержал на десятки файлов меньше) (Laravel 11 is now released! - Laravel News), упрощенная инициализация приложения (убран класс Http/Kernel и вынесена конфигурация в bootstrap) (Laravel 11 is now released! - Laravel News), а также новые инструменты, такие как Laravel Reverb – встроенный сервер для WebSocket в реальном времени (Laravel 11 is now released! - Laravel News), и Laravel Folio – пакет для файлового роутинга страниц. Кроме того, Laravel 11 внес улучшения вроде покомандного ограничения запросов (per-second rate limiting) и новый эндпойнт здоровья (health check) (Release Notes - Laravel 11.x - The PHP Framework For Web Artisans). Laravel 12 же не добавляет настолько заметных новых подсистем – вместо этого он развивает и улучшает уже существующие. Например, поддержка WebSocket, начатая в 11-й версии с пакетом Reverb, в Laravel 12 получила развитие через оптимизацию очередей и интеграцию с Echo (см. раздел про производительность). Возможности по разграничению и структурированию кода, заложенные в новом скелете Laravel 11, получили практическое применение в Laravel 12 через новые стартовые наборы, которые следуют той же философии минималистичной структуры. То есть Laravel 12 строится «на плечах» Laravel 11, делая следующий шаг без резкой смены курса.

Starter Kits vs Breeze/Jetstream. Существенное отличие – подход к стартовым шаблонам. В Laravel 11 при создании типичных функций аутентификации предлагалось использовать пакеты Breeze (базовый шаблон с Blade) или Jetstream (более расширенный шаблон с Livewire или Inertia и продвинутыми функциями). В Laravel 12 эти пакеты решено заменить новыми Starter Kits, описанными ранее (Laravel 12. Что нового? / Хабр). Теперь разработчик с самого начала выбирает технологический стек и получает свежий набор кода, тогда как в Laravel 11 после установки фреймворка ещё требовалось подтянуть нужный пакет и запустить команду его установки. Это отражает смену парадигмы: Laravel 12 стремится сразу быть готовым под современные SPA-фронтенды и livewire-приложения. Для тех, кто обновляется с Laravel 11, это означает, что можно перейти на новую систему шаблонов, но также и продолжить использовать Breeze/Jetstream, если они уже внедрены – ломающих изменений нет, просто старые пакеты больше не развиваются.

Новые функции Laravel 12. Часть возможностей, которые рекламируются как новые в Laravel 12, на самом деле стали результатом постепенных обновлений 11-й ветки в течение года. Дело в том, что начиная с Laravel 11 разработчики перешли на модель непрерывного добавления функций через минорные релизы, не дожидаясь следующего мажорного выпуска (Everything we know about Laravel 12 - Laravel News). Например, в Laravel 11.x (после релиза 11.0) были добавлены такие полезные вещи, как помощник fluent() для удобной цепочки методов, обратимые промпты в консоли, анонимное вещание событий, улучшенная страница ошибок с темной темой, новые строковые хелперы chopStart()/chopEnd(), helper deduplicate() и экспериментальный механизм Chaperone для слежения за моделями (Everything we know about Laravel 12 - Laravel News). К моменту выхода Laravel 12 все эти функции уже были частью фреймворка. Таким образом, Laravel 12 унаследовал множество новшеств из 11-й версии, и для тех, кто пропустил обновления 11.x, переход на 12 принесет сразу целый набор новых возможностей. Однако уникальными для Laravel 12 являются прежде всего Starter Kits, GraphQL, secureValidate и другие изменения, о которых мы подробно говорили выше. Эти вещи отсутствовали в Laravel 11 изначально.

Начните с нами: 6 месяцев бесплатного хостинга!
Используйте промокод FREE6MONTH и раскройте потенциал своего сайта без финансовых вложений.

Подводя итог, можно сказать, что Laravel 12 отличается от Laravel 11 скорее эволюционным развитием, чем революционным. Версия 12 не переламывает устоявшихся подходов, а шлифует их. Если Laravel 11 был крупным шагом с точки зрения обновления ядра и структуры, то Laravel 12 – это наведенный лоск, оптимизация и дополнительные инструменты, делающие работу с фреймворком ещё более удобной и надежной. Для разработчиков, освоивших Laravel 11, переход на Laravel 12 будет плавным: вы получите улучшения производительности и безопасности, новые опции, но сможете продолжать писать код в привычной манере.

Примеры кода новых функций

Ниже приведены некоторые примеры кода, демонстрирующие новые возможности Laravel 12 и сравнивающие их с подходами предыдущей версии (Laravel 11):

1. Асинхронное кэширование (производительность):
В Laravel 11 для запоминания значения с вычислением при промахе кэша использовался метод remember, который выполнялся синхронно. В Laravel 12 добавлен новый метод asyncRemember, позволяющий не блокировать выполнение во время записи данных в кэш.

// Laravel 11: синхронное кэширование
$user = Cache::remember('user_'.$id, 600, function () use ($id) {
    return User::find($id);
});
// Laravel 12: асинхронное кэширование
$user = Cache::asyncRemember('user_'.$id, 600, function () use ($id) {
    return User::find($id);
});

В примере выше код Laravel 12 сразу возвращает управление после вызова asyncRemember, не дожидаясь завершения операции записи, что улучшает отзывчивость приложения ( What's New in Laravel 12: An Comprehensive Overview ).

2. Безопасная валидация пароля (безопасность):
Laravel 12 вводит метод secureValidate, который расширяет стандартную валидацию, автоматически добавляя правила безопасности, такие как требование «сильного» пароля. В Laravel 11 приходилось задавать минимальные требования вручную.

// Laravel 11: базовая проверка пароля
$request->validate([
    'password' => 'required|min:8',
]);
// Laravel 12: проверка пароля с усиленной политикой
$request->secureValidate([
    'password' => ['required', 'min:8', 'strong'],
]);

Во втором фрагменте используется новое правило strong, которое заставляет пароль соответствовать строгим критериям надежности по умолчанию ( What's New in Laravel 12: An Comprehensive Overview ). Это повышает безопасность без дополнительного кода со стороны разработчика.

Специальное предложение: бесплатный хостинг на полгода!
Введите промокод FREE6MONTH при регистрации и наслаждайтесь надежным хостингом бесплатно.

3. Nested Where в построении запросов (ORM/Query Builder):
Для упрощения сложных SQL-запросов Laravel 12 предлагает метод nestedWhere(). В Laravel 11 для группировки условий приходилось использовать замыкание с анонимной функцией внутри where.

// Laravel 11: сложное условие через замыкание
$users = DB::table('users')
    ->where('status', 'active')
    ->where(function ($query) {
        $query->where('age', '>', 25)
              ->orWhere('city', 'New York');
    })
    ->get();
// Laravel 12: использование nestedWhere
$users = DB::table('users')
    ->where('status', 'active')
    ->nestedWhere('age', '>', 25, 'or', 'city', 'New York')
    ->get();

В версии 12 код выглядит лаконичнее – метод nestedWhere принимает несколько условий и сам обрабатывает их как группу, эквивалентную вложенному WHERE (...) в SQL (Laravel 12: New Features & Upgradation Guide) (Laravel 12: New Features & Upgradation Guide). Это улучшает читаемость и потенциально производительность запросов.

4. Версионирование API-маршрутов (REST/API):
Laravel 12 позволяет объявлять версию API и группировать маршруты по версиям, чего не было из коробки в Laravel 11.

// Laravel 11: маршруты с явным префиксом версии
Route::get('/api/v1/users', [UserController::class, 'index']);
Route::get('/api/v1/orders', [OrderController::class, 'index']);
// Laravel 12: группировка маршрутов по версии API
Route::apiVersion(1)->group(function () {
    Route::get('/users', [UserController::class, 'index']);
    Route::get('/orders', [OrderController::class, 'index']);
});

Во втором случае все маршруты, заключенные в группу Route::apiVersion(1), автоматически получат префикс /api/v1 и могут совместно настраиваться (например, применять общие middleware). Такой синтаксис упрощает поддержку нескольких версий API, устраняя дублирование префиксов и позволяя легко скопировать группу для версии v2 с минимальными изменениями ( What's New in Laravel 12: An Comprehensive Overview ).

5. Единая команда для генерации кода (scaffolding):
В Laravel 11 для создания модели вместе с миграцией, контроллером и ресурсом приходилось указывать несколько флагов или выполнять несколько команд Artisan. Laravel 12 вводит команду scaffold, делающую всё сразу.

# Laravel 11: генерация через разные флаги
php artisan make:model Product -mcr
# (создаст модель Product, миграцию (-m), контроллер (-c) и ресурс Resource (-r))
# Laravel 12: новая команда scaffold
php artisan scaffold Product
# (создаст модель Product и связанные файлы миграции, контроллера, фабрики и т.д.)

Данная команда экономит время и устраняет необходимость помнить набор флагов – Laravel 12 сам поймет, что нужно сгенерировать, исходя из лучших практик (Laravel 12: New Features & Upgradation Guide).

Специальное предложение: бесплатный хостинг на полгода!
Введите промокод FREE6MONTH при регистрации и наслаждайтесь надежным хостингом бесплатно.

Приведенные примеры – лишь часть новшеств Laravel 12. Они наглядно демонстрируют тенденцию фреймворка к упрощению разработки (меньше шаблонного кода, более выразительные методы) и повышению безопасности по умолчанию. С такими улучшениями Laravel 12 продолжает укреплять свою позицию одного из самых удобных и мощных инструментов для веб-разработки (Laravel 12 - New Features And Latest Updates) (Laravel 12 - New Features And Latest Updates).

Вывод: Laravel 12 не принес революции, но стал логичным шагом вперёд. Разработчики получили обновлённый фреймворк, который обеспечивает лёгкий старт проектов благодаря новым стартовым наборам, обладает расширенными возможностями (GraphQL, улучшенный ORM, удобные хелперы), более безопасен из коробки и оптимизирован по скорости. При этом переход с Laravel 11 крайне прост, что снижает риски и усилия при обновлении. Таким образом, Laravel 12 объединяет в себе проверенные временем подходы и свежие идеи, делая разработку ещё более продуктивной и приятной.

Хостинг, на который можно положиться!
Siteko.net

Устали от медленного хостинга или дорогих тарифов? Тогда вам к нам! Siteko.net — это быстрый и простой хостинг для тех, кто ценит удобство и стабильность.

  • Без падений и нервов — наш uptime почти всегда 100%.
  • Гибкие тарифы — только нужные функции, ничего лишнего.
  • Скорость— сайты грузятся, как пуля!
  • Удобно — разобраться сможет даже новичок, всё под рукой.
  • Поддержка всегда рядом 24/7 поможем решить любой вопрос.

Заходите на Siteko.net и попробуйте нас бесплатно первый месяц! Мы делаем всё, чтобы ваш сайт работал без проблем.

Siteko.net — просто, быстро и надёжно!