• Время чтения ~1 мин
  • 11.02.2024

Мы думаем, что вам понравится свежий скелет, с которого вы начинаете в приложении 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 со всеми подробностями об этом захватывающем новом релизе.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297