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.php
Być 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.