El pasado 12 de noviembre se publicó la versión 11.31 de Laravel que incluye constructores de DB, Mail y Cache de forma dinámica, esto, utilizando los respectivos facades, evitando así tener que utilizar una conexión definida a través de los archivos de configuración.
Configurar conexión a base de datos de forma dinámica con DB::build()
DB::build()
permitirá al desarrollador crear una nueva conexión a una base de datos de forma dinámica, de la siguiente forma:
$sqlite = DB::build([
'driver' => 'sqlite',
'database' => ':memory:',
]);
$mysql = DB::build([
'driver' => 'mysql',
'database' => 'forge',
'username' => 'root',
'password' => 'secret',
]);
Fuente: PR #53464
Configurar mailer de forma dinámica con Mail::build()
Al igual que con el facade DB, Mail también tiene un nuevo método Build, el cual permite configurar un mailer de forma dinámica para utilizarla on-demand:
$mailer = Mail::build([
'transport' => 'smtp',
'host' => '127.0.0.1',
'port' => 587,
'encryption' => 'tls',
'username' => 'usr',
'password' => 'pwd',
'timeout' => 5,
]);
$mailer->send($mailable);
Fuente: PR #53411
Repositorios de caché dinámicos con Cache::build()
Finalmente, el método Cache::build
nos permitirá crear repositorios de caché de la siguiente forma:
$apc = Cache::build([
'driver' => 'apc',
]);
$array = Cache::build([
'driver' => 'array',
'serialize' => false,
]);
$database = Cache::build([
'driver' => 'database',
'table' => 'cache',
'connection' => null,
'lock_connection' => null,
]);
$file = Cache::build([
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
]);
Fuente: PR #53454
Un caso de uso podría ser cuando se requiere extraer información de una base de datos externa, a la que el usuario se podría conectar, o realizar un envío de correo con una configuración propia del usuario.
Esta información y los cambios están descritos en el changelog de Laravel v11.31.0