Volver a la página principal
sábado 28 septiembre 2024
6

Cómo usar app() en Laravel para acceder al contenedor de servicios

Definición de app() en Laravel

La función app() devuelve la instancia del contenedor de servicios de Laravel. Esto facilita el acceso a los servicios registrados en la aplicación, como configuraciones, controladores, middleware, servicios personalizados y más.

Ejemplo básico de uso:

$instance = app();

Aquí, $instance es la instancia global del contenedor de servicios de Laravel, que puede usarse para resolver dependencias y obtener instancias de clases registradas.

Algunos ejemplos de uso de app()

1. Obtener una instancia de un servicio:

$config = app('config');
   echo $config->get('app.timezone');

Este código obtiene el servicio de configuración y muestra la zona horaria configurada en el archivo config/app.php.

2. Resolver una clase con el contenedor:

$userService = app(\App\Services\UserService::class);
   $userService->createUser($data);

Aquí, app() crea una instancia de la clase UserService, resolviendo automáticamente cualquier dependencia que la clase requiera.

3. Inyectar dependencias en controladores o servicios:

$mailer = app(\Illuminate\Contracts\Mail\Mailer::class);
   $mailer->to('example@example.com')->send(new WelcomeMail());

Se usa app() para acceder al servicio de correo (Mailer), enviando un correo usando su interfaz.

4. Obtener la ruta actual o la instancia de la solicitud:

$request = app('request');
   echo $request->url();

app('request') devuelve la instancia actual de la solicitud HTTP, permitiendo acceder a sus métodos como url() o method().

5. Ejecutar la lógica de un binding personalizado:

app()->bind('CustomLogic', function () {
       return new \App\Custom\LogicClass;
   });

   $logicInstance = app('CustomLogic');

En este caso, app() se usa para registrar y luego resolver una lógica personalizada.

Referencia oficial

Para más detalles sobre el contenedor de servicios y el uso de app(), visita la documentación oficial de Laravel.

Etiquetas:
laravel php
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer