Buscar..
Patrón de inyección de dependencia
Imagina que tienes un administrador de clase para administrar el envío de correos (se llamará MailManager).
En esto, tienes que registrar los correos que se envían. Una buena solución es transformar la clase MailManager en un service
y luego inyectar la clase para crear registros ( Monolog
por ejemplo) en el MailManager creando un servicio.
Para hacer esto :
1- Declarar la futura clase de MailManager como servicio (en services.yml)
services:
mail.manager.class:
class: Vendor/YourBundle/Manager/MailManager
2- Inyectar el servicio existente logger utilizando el método de argument
services:
mail.manager.class:
class: Project/Bundle/Manager/MailManager
arguments: ["@logger"] # inject logger service into constructor
3- Crear la clase MailManager.
<?php
namespace Project\Bundle\Manager;
use Symfony\Component\HttpKernel\Log\LoggerInterface;
class MailManager
{
protected $logger;
//initialized logger object
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function sendMail($parameters)
{
//some codes to send mail
//example using logger
$this->logger->info('Mail sending');
}
}
4- Llamar a MailManager en un controlador, por ejemplo.
<?php
class TestController extends Controller
{
public function indexAction()
{
//some codes...
//call mail manager service
$mailManager = $this->get('mail.manager.class');
//call 'sendMail' function from this service
$mailManager->sendMail($parameters);
}
}
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow