Laravel 11. Registrando cosas
Laravel 11 introduce cambios importantes
en la forma en que registramos las clases en la aplicación.
En general, todo ira en el fichero "bootstrap/app.php" dentro de un bloque como este:
return Application::configure(basePath: dirname(__DIR__))
...
->create();
Registrar middlewares
El fichero "app/Http/Kernel.php" desaparece, entonces para
registrar los middlewares, usamos el fichero
"bootstrap/app.php" donde tendremos algo como:
->withMiddleware(function (Middleware $middleware) {
$middleware->statefulApi(); // enable sanctum frontend middleware
$middleware->throttleApi('api', false);
$middleware->web(append: [
LanguageMiddleware::class,
...
]);
$middleware->api(append: [
CheckApiMiddleware::class,
...
]);
})
Los métodos disponibles pueden consultarse en la propia clase:
Illuminate\Foundation\Configuration\Middleware
Registrar comandos
Si dejamos los comandos dentro de "app/Console/Commands/"
o un subdirectorio no habrá que registrar el comando.
Si lo sacamos de su ubicación por defecto,
debe registrarse en "bootstrap/app.php", p.e. la clase FooCommand:
->withCommands([
FooCommand::class,
])
Gestión de excepciones
Como en otros casos, se usa el fichero "bootstrap/app.php":
->withExceptions(function (Exceptions $exceptions) {
$exceptions->dontReport(MissedFlightException::class);
$exceptions->report(function (InvalidOrderException $e) {
// ...
});
})
Los métodos disponibles pueden consultarse en la propia clase:
Illuminate\Foundation\Configuration\Exceptions
Registrar "service providers"
Usaremos el array del fichero "bootstrap/providers.php".
Registrar ficheros de rutas, prefijos, etc.
Dentro de "bootstrap/app.php" podemos registrar algo como:
->withRouting(
api: __DIR__.'/../routes/api.php',
apiPrefix: 'api',
commands: __DIR__.'/../routes/console.php',
health: '/up',
web: __DIR__.'/../routes/web.php',
)
Prefiero crear varios archivos para cada tipo de ruta,
por el momento puede usarse Route en alguno de los ficheros ya indicados,
p.e. en "routes/api.php":
<?php
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->group(base_path('routes/api_v1_public.php'));
Route::prefix('v1')->group(base_path('routes/api_v1_private.php'));
Para las rutas anteriores el prefijo completo será: "api/v1/"
Sitios consultados
12-10-2024
Entradas relacionadas: