Мы думаем, что вам понравится свежий скелет, с которого вы начинаете в приложении Laravel 11, которое выйдет на следующей неделе! Новички по достоинству оценят минимализм, а опытные разработчики апгрейда не столкнутся с критическими изменениями. Вам не нужно изменять структуру приложения Laravel 10, чтобы перейти на Laravel 11.
Если вы хотите поэкспериментировать, вы можете создать проект Laravel 10 и Laravel 11 бок о бок. Для этого мы использовали следующие команды:На первый взгляд, структура каталогов проекта выглядит идентично:Однако, если вы начнете погружаться в подкаталоги, количество файлов в свежей установке Laravel 11 уменьшится на ~ 69 файлов:
# Update the installer
composer global update laravel/installer -W
cd path/to/projects
# Create a Laravel 10 app
laravel new laravel-10-app -n --git --pest
# Crate a Laravel 11 app
laravel new laravel-11-app --dev -n --git --pest
Давайте рассмотрим наиболее значимые обновления и посмотрим, как они соотносятся с приложением Laravel 10, чтобы вы могли быть готовы к изменениям,
# Fresh Laravel v10 app
$ find . -type f -not -path "./vendor/*" | wc -l
=> 217
# Fresh Laravel v11 app (as of 01/29/2024)
$ find . -type f -not -path "./vendor/*" | wc -l
=> 148
которые произойдут в свежих приложениях Laravel 11.
Каталог app
Каталог app
был значительно сокращен, девять промежуточных программ, поставляемых с Laravel, были перемещены во фреймворк и из проекта. Как правило, это промежуточное ПО не сильно настраивается, и Laravel 11 предоставит другие методы настройки встроенного промежуточного ПО и добавления собственного промежуточного ПО.
The app
directory in a fresh Laravel 11 app
Изменения промежуточного ПО вносятся через файл, который, по словам Тейлора Отвелла, представляет собой «файл стиля lean routes для настройки Laravel», который выглядит следующим образом:Вы можете добавить промежуточное ПО приложения, добавив что-то вроде следующего в замыкании:
return Application::configure(basePath: dirname(__DIR__))
->withProviders()
->withRouting(
web: __DIR__.'/../routes/web.php',
// api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
// channels: __DIR__.'/../routes/channels.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Файлы больше не находятся в withMiddeware()
проекте Laravel, и они обрабатываются через bootstrap/app.php
файл фреймворкаbootstrap/app.php
.
$middleware->web(append: \App\Http\Middleware\ExampleMiddleware::class);
Kernel.php
Возможно, вы также заметили, что каталог включает только один Controller
класс, Controllers
который ни из чего не расширяется. Вам решать, как вы хотите расширить свои контроллеры (или нет), но он предоставляет класс по умолчаниюabstract Controller
.
Каталог config
Самым большим шоком для вас может стать обновленный config
каталог, в котором... ничего внутри него (кроме .gitkeep
файла). Однако вы заметите, что в файле .env.example
существует гораздо больше параметров конфигурации.
Если вы хотите опубликовать какой-либо конфигурационный файл из фреймворка, чтобы настроить его, вы можете сделать это с помощью config:publish
команды:
# config/database.php
php artisan config:publish database
# config/logging.php
php artisan config:publish logging
# Or publish all of them
php artisan config:publish
Вы можете расширить только те значения конфигурации, которые вас интересуют, и они будут объединены со значениями по умолчанию фреймворка, поэтому вам не нужно хранить все опубликованные параметры конфигурации в данном файле.
Предположим, вы хотите найти значения конфигурации в конфигурации, поставляемой платформой. В этом случае вы можете использовать команду Artisanconfig:show
, опубликовать конфигурацию или найти ее в файле config/logging.php
в папке поставщика Laravel:
php artisan config:show logging
cat vendor/laravel/framework/config/logging.php
Каталог database
Каталог database
примерно такой же. Однако вы заметите, что имена файлов миграции имеют префикс, который не представляет заданную дату, но сохраняет их порядок по мере необходимости. Файл create_personal_access_tokens.php
миграции больше не находится в проекте. Персональные маркеры доступа требуются только в том случае, если вы создаете API, который мы рассмотрим в разделе Изменения каталогаroutes
.
Кроме того, файл будет установлен по умолчанию, database.sqlite
если вы не выберете другой вариант базы данных при создании нового проекта Laravel.
Каталог Каталог routes
routes также был сокращен и теперь включает в себя web.php
файлы и console.php
routes. Если вы хотите создать API или использовать функциональность широковещательной передачи, вы можете установить их через artisan
:
php artisan install:api
php artisan install:broadcasting
Эти команды добавят необходимые миграции, JavaScript и файлы конфигурации. Что хорошо в этом, так это то, что приложениям, которые не нуждаются в широковещательной передаче или маршрутах API, не нужно беспокоиться о том, что эти ненужные файлы находятся в проекте.
Laravel 11 routes
directory
Каталог Каталог test
test/
больше не включает CreatesApplication
типаж в проектах Laravel 11. Если вы обновите свой проект Laravel 10, вы можете удалить эту особенность, так как теперь она предоставляется как часть базы TestCase
из фреймворка.
В проекте Laravel 10 единственное, что включено в базовый TestCase
класс Laravel 10, — это CreatesApplication
типаж, который запускает приложение при создании нового приложения в рамках установки перед каждым тестом. Вы можете безопасно удалить эту особенность (и ее использование) после обновления существующих приложений до Laravel 11.
С Laravel 10 на Laravel 11 Вам совсем не нужно менять структуру вашего приложения Laravel 10, чтобы перейти на Laravel 11
. Это будет структура только для совершенно новых приложений, и вы по-прежнему сможете использовать старый способ, если хотите.
Подробнее Если
вы хотите узнать больше о Laravel 11, ознакомьтесь с нашим постом о Laravel 11 со всеми подробностями об этом захватывающем новом релизе.