• Час читання ~1 хв
  • 11.02.2024

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

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