Skip to content

Instantly share code, notes, and snippets.

@madapaja
Created July 17, 2012 06:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save madapaja/3127506 to your computer and use it in GitHub Desktop.
Save madapaja/3127506 to your computer and use it in GitHub Desktop.
success case
<?php
abstract class MailerInterface {
private $transport;
/**
* @Inject
* @Named("transport_type")
*/
public function __construct($transport)
{
$this->transport = $transport;
}
}
class Mailer extends MailerInterface {}
<?php
class NewsletterManager
{
private $mailer;
/**
* @Inject
*/
public function __construct(MailerInterface $mailer)
{
$this->mailer = $mailer;
}
}
<?php
use Doctrine\Common\Annotations\AnnotationRegistry;
use Ray\Di\Di\Inject;
use Ray\Di\Di\Named;
use Ray\Di\Injector;
use Ray\Di\AbstractModule;
$loader = require __DIR__.'/vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, "loadClass"));
require "ray2-mailer.php";
require "ray2-newsletter-manager.php";
class NewsletterModule extends AbstractModule
{
protected function configure()
{
$this->bind()->annotatedWith('transport_type')->toInstance('sendmail');
$this->bind('MailerInterface')->to('Mailer');
}
}
$di = Injector::create([new NewsletterModule]);
$newsletterManager = $di->getInstance('NewsletterManager');
var_dump($newsletterManager);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment