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.
$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.
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.
Para más detalles sobre el contenedor de servicios y el uso de app(), visita la documentación oficial de Laravel.
Jorge García
Fullstack developer