Tabla de contenido:

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.

Jonnathan Chiroy Profile Picture

"Hola, soy un desarrollador apasionado por Laravel y su ecosistema que permiten desarrollar aplicaciones magnificas, tratare de compartir mis conocimientos y vivencias desarrollando aplicaciones utilizando TALL stack, PostgreSQL y MySQL. 🤘"

Jonnathan Chiroy (jchiroy)
Laravel developer