Ricerca…
Schema dell'iniezione delle dipendenze
Immagina di avere un manager di classe per gestire l'invio di posta (si chiami MailManager).
In questo, devi registrare le mail che vengono inviate. Una buona soluzione è trasformare la classe MailManager in un service
e quindi immettere la classe per la creazione di registri ( Monolog
per esempio) nel MailManager creando un servizio.
Per fare questo :
1- Dichiara la futura classe MailManager come servizio (in services.yml)
services:
mail.manager.class:
class: Vendor/YourBundle/Manager/MailManager
2- Iniettare il servizio esistente del logger usando il metodo argument
services:
mail.manager.class:
class: Project/Bundle/Manager/MailManager
arguments: ["@logger"] # inject logger service into constructor
3- Creare una classe 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- Chiama MailManager in un controller, ad esempio
<?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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow