Ми думаємо, що вам сподобається свіжий скелет, з якого ви почнете в додатку Laravel 11, який вийде наступного тижня! Новачки по достоїнству оцінять мінімалізм, а досвідчені розробники апгрейду не відчують кардинальних змін. Вам не потрібно змінювати структуру програми Laravel 10, щоб оновитися до Laravel 11.
Якщо ви хочете слідкувати за текстом і експериментувати, ви можете створити проект Laravel 10 і Laravel 11 пліч-о-пліч. Для цього ми використовували такі команди:
# 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 11 на ~ 69 files:
# 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 10, щоб ви могли бути готові до змін, які з'являться в свіжих програмах Laravel 11.
Каталог Каталог app
app
був значно скорочений, перемістивши дев'ять проміжних програм, які постачаються з Laravel, у фреймворк і за межі проекту. Як правило, це проміжне програмне забезпечення не сильно налаштоване, і Laravel 11 надасть інші методи налаштування вбудованого проміжного програмного забезпечення та додавання власного проміжного програмного забезпечення.
The app
directory in a fresh Laravel 11 app
Зміни проміжного програмного забезпечення здійснюються через файл, який, bootstrap/app.php
за словами Тейлора Отвелла, є «файлом стилю lean routesque для налаштування Laravel», який виглядає наступним чином:Ви можете додати проміжне програмне забезпечення програми, додавши щось на кшталт наступного у withMiddeware()
закриття:
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();
$middleware->web(append: \App\Http\Middleware\ExampleMiddleware::class);
Файли Kernel.php
більше не знаходяться в проекті Laravel, і вони обробляються через файл фреймворкуbootstrap/app.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
The database
Directory
Каталог database
приблизно однаковий. Однак ви помітите, що назви файлів міграції мають префікс таким чином, що не відображають задану дату, але зберігають їх у порядку за потреби. Файлу create_personal_access_tokens.php
міграції більше немає в проекті. Особисті токени доступу потрібні лише в тому випадку, якщо ви створюєте API, про що ми розповімо у routes
змінах каталогу.
Крім того, файл буде встановлено за замовчуванням, database.sqlite
якщо ви не виберете інший варіант бази даних під час створення нового проекту Laravel.
Каталог Каталог routes
маршрутів також було зменшено лише для того, щоб включити web.php
файли та console.php
файли маршрутів. Якщо ви хочете створити 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 з усіма подробицями про цей захоплюючий новий випуск.