View source
<?php
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
use Symfony\Component\DependencyInjection\Exception\LogicException;
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;
class ProjectServiceContainer extends Container {
private $parameters;
private $targetDirs = array();
public function __construct() {
$this->parameters = $this
->getDefaultParameters();
$this->services = $this->scopedServices = $this->scopeStacks = array();
$this->scopes = array();
$this->scopeChildren = array();
$this->methodMap = array(
'bar' => 'getBarService',
'baz' => 'getBazService',
'configured_service' => 'getConfiguredServiceService',
'decorator_service' => 'getDecoratorServiceService',
'decorator_service_with_name' => 'getDecoratorServiceWithNameService',
'factory_service' => 'getFactoryServiceService',
'foo' => 'getFooService',
'foo.baz' => 'getFoo_BazService',
'foo_bar' => 'getFooBarService',
'foo_with_inline' => 'getFooWithInlineService',
'method_call1' => 'getMethodCall1Service',
'new_factory_service' => 'getNewFactoryServiceService',
'request' => 'getRequestService',
'service_from_static_method' => 'getServiceFromStaticMethodService',
);
$this->aliases = array(
'alias_for_alias' => 'foo',
'alias_for_foo' => 'foo',
'decorated' => 'decorator_service_with_name',
);
}
public function compile() {
throw new LogicException('You cannot compile a dumped frozen container.');
}
protected function getBarService() {
$a = $this
->get('foo.baz');
$this->services['bar'] = $instance = new \Bar\FooClass('foo', $a, $this
->getParameter('foo_bar'));
$a
->configure($instance);
return $instance;
}
protected function getBazService() {
$this->services['baz'] = $instance = new \Baz();
$instance
->setFoo($this
->get('foo_with_inline'));
return $instance;
}
protected function getConfiguredServiceService() {
$a = new \ConfClass();
$a
->setFoo($this
->get('baz'));
$this->services['configured_service'] = $instance = new \stdClass();
$a
->configureStdClass($instance);
return $instance;
}
protected function getDecoratorServiceService() {
return $this->services['decorator_service'] = new \stdClass();
}
protected function getDecoratorServiceWithNameService() {
return $this->services['decorator_service_with_name'] = new \stdClass();
}
protected function getFactoryServiceService() {
return $this->services['factory_service'] = $this
->get('foo.baz')
->getInstance();
}
protected function getFooService() {
$a = $this
->get('foo.baz');
$this->services['foo'] = $instance = \Bar\FooClass::getInstance('foo', $a, array(
'bar' => 'foo is bar',
'foobar' => 'bar',
), true, $this);
$instance
->setBar($this
->get('bar'));
$instance
->initialize();
$instance->foo = 'bar';
$instance->moo = $a;
$instance->qux = array(
'bar' => 'foo is bar',
'foobar' => 'bar',
);
sc_configure($instance);
return $instance;
}
protected function getFoo_BazService() {
$this->services['foo.baz'] = $instance = \BazClass::getInstance();
\BazClass::configureStatic1($instance);
return $instance;
}
protected function getFooBarService() {
return new \Bar\FooClass();
}
protected function getFooWithInlineService() {
$a = new \Bar();
$this->services['foo_with_inline'] = $instance = new \Foo();
$a
->setBaz($this
->get('baz'));
$a->pub = 'pub';
$instance
->setBar($a);
return $instance;
}
protected function getMethodCall1Service() {
require_once '%path%foo.php';
$this->services['method_call1'] = $instance = new \Bar\FooClass();
$instance
->setBar($this
->get('foo'));
$instance
->setBar(NULL);
$instance
->setBar($this
->get("foo")
->foo() . ($this
->hasparameter("foo") ? $this
->getParameter("foo") : "default"));
return $instance;
}
protected function getNewFactoryServiceService() {
$a = new \FactoryClass();
$a->foo = 'bar';
$this->services['new_factory_service'] = $instance = $a
->getInstance();
$instance->foo = 'bar';
return $instance;
}
protected function getRequestService() {
throw new RuntimeException('You have requested a synthetic service ("request"). The DIC does not know how to construct this service.');
}
protected function getServiceFromStaticMethodService() {
return $this->services['service_from_static_method'] = \Bar\FooClass::getInstance();
}
public function getParameter($name) {
$name = strtolower($name);
if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters))) {
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
}
return $this->parameters[$name];
}
public function hasParameter($name) {
$name = strtolower($name);
return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters);
}
public function setParameter($name, $value) {
throw new LogicException('Impossible to call set() on a frozen ParameterBag.');
}
public function getParameterBag() {
if (null === $this->parameterBag) {
$this->parameterBag = new FrozenParameterBag($this->parameters);
}
return $this->parameterBag;
}
protected function getDefaultParameters() {
return array(
'baz_class' => 'BazClass',
'foo_class' => 'Bar\\FooClass',
'foo' => 'bar',
);
}
}