Szukaj…
Zależność Wzór wtrysku
Wyobraź sobie, że masz menedżera klasy, który zarządza wysyłaniem wiadomości e-mail (o nazwie MailManager).
W tym celu musisz rejestrować wysyłane wiadomości e-mail. Dobrym rozwiązaniem jest przekształcenie klasy MailManager w service
a następnie wstrzyknięcie klasy do tworzenia dzienników (na przykład Monolog
) do MailManager tworzącego usługę.
Aby to zrobić:
1- Deklaruj przyszłą klasę MailManager jako usługę (w services.yml)
services:
mail.manager.class:
class: Vendor/YourBundle/Manager/MailManager
2- Wprowadzić istniejącą usługę rejestratora za pomocą metody argument
services:
mail.manager.class:
class: Project/Bundle/Manager/MailManager
arguments: ["@logger"] # inject logger service into constructor
3- Utwórz klasę 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- Zadzwoń na przykład do MailManager w kontrolerze
<?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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow