Zoeken…
Afhankelijkheid Injectiepatroon
Stel je voor dat je een klassenmanager hebt die het verzenden van e-mails beheert (MailManager genoemd).
Hierin moet u e-mails registreren die worden verzonden. Een goede oplossing is om de MailManager-klasse in een service
te transformeren en vervolgens klasse voor het maken van logboeken (bijvoorbeeld Monolog
) in de MailManager te maken die een service maakt.
Om dit te doen :
1- Verklaar de toekomstige MailManager-klasse als service (in services.yml)
services:
mail.manager.class:
class: Vendor/YourBundle/Manager/MailManager
2- Injecteer de bestaande logger- service met de argument
services:
mail.manager.class:
class: Project/Bundle/Manager/MailManager
arguments: ["@logger"] # inject logger service into constructor
3- Maak de klasse 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- Bel MailManager bijvoorbeeld in een controller
<?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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow