Tabla de contenido:
-
Introducción
-
Instalación de Laravel 11
- Cambios en la estructura
-
No más Http/Kernel
-
Cambio en el casting de Modelos
-
Nuevo trait Dumpable
-
Cambios en configuración
-
Cambio en las rutas
-
Rotación de APP_KEY
-
Fecha de lanzamiento de Larvel 11.
Introducción
Laravel el framework PHP que nos ha encantado con cada versión, cada lanzamiento de paquete, sin duda es un framework que ofrece varias formas de crear aplicaciones de una forma rápida. Ahora está próximo a lanzar su versión 11 que ofrece cambios en la estructura de directorios buscando tener una estructura minimalista.
Instalación de Laravel 11
Para instalar Laravel 11 existen dos opciones, vía composer o el instalador global, se puede utilizar el que prefiera.
# utilizando el instalador global
laravel new test-app --dev
# utilizando composer
composer create-project --prefer-dist laravel/laravel test-app dev-master
Cambios en la estructura
Estructura de Laravel 10
app
├── Console
│ └── Kernel.php
├── Exceptions
│ └── Handler.php
├── Http
│ ├── Controllers
│ ├── Kernel.php
│ └── Middleware
├── Models
│ └── User.php
└── Providers
├── AppServiceProvider.php
├── AuthServiceProvider.php
├── BroadcastServiceProvider.php
├── EventServiceProvider.php
└── RouteServiceProvider.php
bootstrap
├── app.php
└── cache
├── packages.php
└── services.php
routes
├── api.php
├── channels.php
├── console.php
└── web.php
...
Estructura de Laravel 11
app
├── Http
│ └── Controllers
├── Models
│ └── User.php
└── Providers
└── AppServiceProvider.php
bootstrap
├── app.php
├── cache
│ ├── packages.php
│ └── services.php
└── providers.php
routes
├── console.php
└── web.php
...
Como se puede observar existen diferencias en los directorios app
, bootstrap
, y routes
estos cambios buscan reducir la cantidad de archivos con información por defecto.
No más Http/Kernel
Ahora puedes hacer las cosas de Kernel en Bootstrap/Ap
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Cambio en el casting de Modelos
Ahora los conversiones para los modelos se definirán como método dejando atrás la propiedad $cast
la ventaja de esto es poder llamar a otros métodos desde las conversiones.
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options'=› AsEnumCollection::of(UserOption::class),
];
}
Nuevo trait Dumpable
Con el objetivo de optimizar el nucleo del framework, ya que en la actualidad varias clases tienen metodos dd
o dump
, ahora se puede utilizar el trait Dumpable
.
class Stringable implements JsonSerializable, ArrayAccess
{
use Dumpable;
str('foo')->dd();
str('foo')->dump();
Cambios en configuración
Como sabemos, Laravel cuenta con varios archivos de configuración, a partir de Laravel 11 los elimina y las opciones de configuración caen en cascada. El .env
se ha definido para incluir todas las opciones que se necesiten configurar.
Pero esto no significa que no pueda utilizar los archivos de configuración, para eso hay nuevo comando config:publish
para publicar cualquier archivo de configuración que necesite modificar.
Cambio en las rutas
De forma predeterminada, soló habrá dos archivos de rutas, console.php
y web.php
. Las rutas API se expondrán con el comando install:api
.
Lo mismo pasa con las rutas de transmisión websocket install:broadcasting
.
Rotación de APP_KEY
En las versiones anteriores de Laravel, si cambia el APP_KEY
, lo cual podría provocar datos rotos en la base de datos. Laravel 11 tiene una nueva rotación elegante que NO romperán los datos antiguos que estén cifrados, utilizando una variable APP_PREVIOUS_KEYS
.
Fecha de lanzamiento de Larvel 11.
La fecha de lanzamiento para Laravel 11 es el 12 de marzo de 2024. Estamos a pocos días para explorar estos cambios y muchos más.
Laravel 11 + Laravel Reverb will be released on Tuesday, March 12th.
— Taylor Otwell (@taylorotwell) March 4, 2024
Save the date. 📅