• Czas czytania ~4 min
  • 11.02.2024

Myślimy, że pokochasz świeży szkielet, od którego zaczynasz w aplikacji Laravel 11, która ukaże się w przyszłym tygodniu! Nowicjusze docenią minimalizm, a doświadczeni programiści nie doświadczą zmian powodujących niezgodność. Nie musisz zmieniać struktury aplikacji Laravel 10, aby uaktualnić do wersji Laravel 11.

Jeśli chcesz podążać za wskazówkami i eksperymentować, możesz stworzyć projekt Laravel 10 i Laravel 11 obok siebie. Użyliśmy do tego następujących poleceń:Na pierwszy rzut oka struktura katalogów projektu wygląda identycznie:

# 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

Jeśli jednak zaczniesz zagłębiać się w podkatalogi, liczba plików spadła ze świeżej instalacji Laravela 11 o ~ 69 plików:

# 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

Przejrzyjmy najważniejsze aktualizacje i zobaczmy, jak wypadają w porównaniu z aplikacją Laravel 10, abyś mógł być gotowy na zmiany nadchodzące w nowych aplikacjach Laravel 11.

Katalog app

Katalog app został ogromnie odchudzony, przenosząc dziewięć programów pośredniczących, które są dostarczane z Laravelem, do frameworka i poza projekt. Zazwyczaj te oprogramowanie pośredniczące nie jest mocno dostosowane, a Laravel 11 zapewni inne metody dostosowywania wbudowanego oprogramowania pośredniczącego i dodawania własnego oprogramowania pośredniczącego.

The app directory in a fresh Laravel 11 app

Zmiany oprogramowania pośredniczącego bootstrap/app.php są wykonywane za pośrednictwem pliku, który według Taylora Otwella jest "plikiem w stylu szczupłych tras do konfiguracji Laravela", który wygląda następująco:Możesz dodać oprogramowanie pośredniczące aplikacji, dodając coś podobnego do następującego w zamknięciuwithMiddeware():

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);

Pliki Kernel.php nie znajdują się już w projekcie Laravel, a te są obsługiwane przez plik frameworka.

bootstrap/app.phpByć może zauważyłeś również, że katalog zawiera tylko jedną Controller klasę, Controllers która nie rozszerza się z niczego. To od Ciebie zależy, jak chcesz rozszerzyć swoje kontrolery (lub nie), ale zapewnia domyślną abstract Controller klasę.

Katalog config

Największym szokiem dla Ciebie może być zaktualizowany config katalog, który ma... nic w nim nie (poza plikiem.gitkeep). Zauważysz jednak, że w .env.example pliku istnieje o wiele więcej opcji konfiguracyjnych.

Jeśli chcesz opublikować dowolny plik konfiguracyjny z frameworka, aby go dostosować, możesz to zrobić za config:publish pomocą polecenia:

# 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

Możesz rozszerzyć tylko te wartości konfiguracyjne, na których Ci zależy, a zostaną one scalone z domyślnymi ustawieniami frameworka, dzięki czemu nie musisz przechowywać wszystkich opublikowanych opcji konfiguracyjnych w danym pliku.

Załóżmy, że chcesz wyszukać wartości konfiguracji w konfiguracji dostarczanej przez platformę. W takim przypadku możesz użyć polecenia Artisanconfig:show, opublikować konfigurację lub wyszukać ją w pliku w config/logging.php folderze dostawcy Laravel:

php artisan config:show logging
cat vendor/laravel/framework/config/logging.php

Katalog Katalog database

database jest mniej więcej taki sam. Zauważysz jednak, że nazwy plików migracji są poprzedzone prefiksem w sposób, który nie reprezentuje danej daty, ale utrzymuje je w odpowiedniej kolejności. Plik create_personal_access_tokens.php migracji nie znajduje się już w projekcie. Osobiste tokeny dostępu są wymagane tylko wtedy, gdy tworzysz interfejs API, który omówimy w routes zmianach katalogu.

Ponadto plik zostanie zainstalowany database.sqlite domyślnie, chyba że wybierzesz inną opcję bazy danych podczas tworzenia nowego projektu Laravel.

Katalog Katalog routes

tras został również odchudzony tylko tak, aby zawierał web.php pliki i console.php trasy. Jeśli chcesz utworzyć interfejs API lub skorzystać z funkcji rozgłaszania, możesz je zainstalować za pomocą artisan:

php artisan install:api
php artisan install:broadcasting

Te polecenia wprowadzą wymagane migracje, JavaScript i pliki konfiguracyjne. Fajne jest to, że aplikacje, które nie potrzebują emisji ani tras API, nie muszą się martwić, że te niepotrzebne pliki znajdą się w projekcie.

Laravel 11 routes directory

Katalog test

Katalog test/ nie zawiera CreatesApplication już tej cechy w projektach Laravel 11. Jeśli zaktualizujesz swój projekt Laravel 10, możesz usunąć tę cechę, ponieważ jest ona teraz dostarczana jako część podstawy TestCase z frameworka.

W projekcie Laravel 10 jedyną rzeczą zawartą w klasie bazowej TestCase w Laravelu 10 jest CreatesApplication cecha, która uruchamia aplikację podczas tworzenia nowej aplikacji w ramach konfiguracji przed każdym testem. Możesz bezpiecznie usunąć tę cechę (i jej użycie) po uaktualnieniu istniejących aplikacji do Laravel 11.

Od Laravela 10 do Laravela 11 Nie musisz w ogóle zmieniać struktury aplikacji Laravel 10, aby uaktualnić do wersji Laravel 11

. Będzie to struktura tylko dla zupełnie nowych aplikacji i nadal będziesz mógł korzystać ze starego sposobu, jeśli wolisz.

Dowiedz się więcej Jeśli chcesz dowiedzieć się więcej

o Laravelu 11, sprawdź nasz post Laravel 11 ze wszystkimi szczegółami na temat tej ekscytującej nowej wersji.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297