Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save fritz-gerneth/1560932 to your computer and use it in GitHub Desktop.
Save fritz-gerneth/1560932 to your computer and use it in GitHub Desktop.
Event-subscribers loaded by Locator
<?php
namespace SpiffyDoctrine\Doctrine\Common;
use Doctrine\Common\EventManager as DoctrineEventManager,
SpiffyDoctrine\Doctrine\Instance;
class EventManager extends Instance implements \Zend\Loader\LocatorAware
{
/**
* @var array
*/
protected $definition = array(
'optional' => array(
'subscribers' => 'array'
)
);
protected $locator;
/**
* (non-PHPdoc)
* @see SpiffyDoctrine\Instance.Instance::loadInstance()
*/
protected function loadInstance()
{
$opts = $this->getOptions();
$evm = new DoctrineEventManager;
foreach($opts['subscribers'] as $subscriber) {
if (is_string($subscriber)) {
/** if (!class_exists($subscriber)) {
throw new \InvalidArgumentException(sprintf(
'failed to register subscriber "%s" because the class does not exist.',
$subscriber
));
}
$subscriber = new $subscriber;
*/
$subscriber = $this->getLocator()->get($subscriber);
}
$evm->addEventSubscriber($subscriber);
}
$this->instance = $evm;
}
public function getLocator()
{
return $this->locator;
}
public function setLocator(\Zend\Di\Locator $locator)
{
$this->locator = $locator;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment