<?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\Reference;
use Symfony\Component\DependencyInjection\Parameter;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
class ProjectServiceContainer extends Container {
public function __construct() {
parent::__construct(new ParameterBag($this
->getDefaultParameters()));
$this->methodMap = array(
'bar' => 'getBarService',
'baz' => 'getBazService',
'depends_on_request' => 'getDependsOnRequestService',
'factory_service' => 'getFactoryServiceService',
'foo' => 'getFooService',
'foo.baz' => 'getFoo_BazService',
'foo_bar' => 'getFooBarService',
'foo_with_inline' => 'getFooWithInlineService',
'inlined' => 'getInlinedService',
'method_call1' => 'getMethodCall1Service',
'request' => 'getRequestService',
);
$this->aliases = array(
'alias_for_alias' => 'foo',
'alias_for_foo' => 'foo',
);
}
protected function getBarService() {
$this->services['bar'] = $instance = new \FooClass('foo', $this
->get('foo.baz'), $this
->getParameter('foo_bar'));
$this
->get('foo.baz')
->configure($instance);
return $instance;
}
protected function getBazService() {
$this->services['baz'] = $instance = new \Baz();
$instance
->setFoo($this
->get('foo_with_inline'));
return $instance;
}
protected function getDependsOnRequestService() {
$this->services['depends_on_request'] = $instance = new \stdClass();
$instance
->setRequest($this
->get('request', ContainerInterface::NULL_ON_INVALID_REFERENCE));
return $instance;
}
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 = call_user_func(array(
'FooClass',
'getInstance',
), 'foo', $a, array(
$this
->getParameter('foo') => 'foo is ' . $this
->getParameter('foo') . '',
'foobar' => $this
->getParameter('foo'),
), true, $this);
$instance
->setBar($this
->get('bar'));
$instance
->initialize();
$instance->foo = 'bar';
$instance->moo = $a;
sc_configure($instance);
return $instance;
}
protected function getFoo_BazService() {
$this->services['foo.baz'] = $instance = call_user_func(array(
$this
->getParameter('baz_class'),
'getInstance',
));
call_user_func(array(
$this
->getParameter('baz_class'),
'configureStatic1',
), $instance);
return $instance;
}
protected function getFooBarService() {
$class = $this
->getParameter('foo_class');
return new $class();
}
protected function getFooWithInlineService() {
$this->services['foo_with_inline'] = $instance = new \Foo();
$instance
->setBar($this
->get('inlined'));
return $instance;
}
protected function getMethodCall1Service() {
require_once '%path%foo.php';
$this->services['method_call1'] = $instance = new \FooClass();
$instance
->setBar($this
->get('foo'));
$instance
->setBar($this
->get('foo2', ContainerInterface::NULL_ON_INVALID_REFERENCE));
if ($this
->has('foo3')) {
$instance
->setBar($this
->get('foo3', ContainerInterface::NULL_ON_INVALID_REFERENCE));
}
if ($this
->has('foobaz')) {
$instance
->setBar($this
->get('foobaz', ContainerInterface::NULL_ON_INVALID_REFERENCE));
}
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 synchronizeRequestService() {
if ($this
->initialized('depends_on_request')) {
$this
->get('depends_on_request')
->setRequest($this
->get('request', ContainerInterface::NULL_ON_INVALID_REFERENCE));
}
}
protected function getInlinedService() {
$this->services['inlined'] = $instance = new \Bar();
$instance
->setBaz($this
->get('baz'));
$instance->pub = 'pub';
return $instance;
}
protected function getDefaultParameters() {
return array(
'baz_class' => 'BazClass',
'foo_class' => 'FooClass',
'foo' => 'bar',
);
}
}