c5f2ec8d2d
Now that we have a compilation phase for the DIC, using tags after compilation is not needed anymore. Tags were introduced to allow several independant bundles to be able to interact which each others (remember that each extension knows nothing about the others). But during the compilation phase, the container has been merged ans so, all the information from all bundles are available. This is then the right place to deal with tags. That way, less work is needed at runtime and the DIC class in the cache is also much smaller. For simple cases, it means that you need to process the tag in a compiler pass and store the information you need in a DIC parameter (have a look at the TranslatorPass for a very simple example). So, the PHP dumper does not add tags to the dumped PHP class anymore (it does not implements TaggedContainerInterface anymore). But tags are still available on ContainerBuilder instances.
152 lines
4.2 KiB
PHP
152 lines
4.2 KiB
PHP
<?php
|
|
|
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
use Symfony\Component\DependencyInjection\Container;
|
|
use Symfony\Component\DependencyInjection\Reference;
|
|
use Symfony\Component\DependencyInjection\Parameter;
|
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
|
|
|
|
/**
|
|
* ProjectServiceContainer
|
|
*
|
|
* This class has been auto-generated
|
|
* by the Symfony Dependency Injection Component.
|
|
*/
|
|
class ProjectServiceContainer extends Container
|
|
{
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct(new ParameterBag($this->getDefaultParameters()));
|
|
}
|
|
|
|
/**
|
|
* Gets the 'foo' service.
|
|
*
|
|
* @return FooClass A FooClass instance.
|
|
*/
|
|
protected function getFooService()
|
|
{
|
|
$instance = call_user_func(array('FooClass', 'getInstance'), 'foo', $this->get('foo.baz'), array($this->getParameter('foo') => 'foo is '.$this->getParameter('foo'), 'bar' => $this->getParameter('foo')), true, $this);
|
|
|
|
$instance->setBar($this->get('bar'));
|
|
$instance->initialize();
|
|
sc_configure($instance);
|
|
|
|
return $instance;
|
|
}
|
|
|
|
/**
|
|
* Gets the 'bar' service.
|
|
*
|
|
* This service is shared.
|
|
* This method always returns the same instance of the service.
|
|
*
|
|
* @return FooClass A FooClass instance.
|
|
*/
|
|
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;
|
|
}
|
|
|
|
/**
|
|
* Gets the 'foo.baz' service.
|
|
*
|
|
* This service is shared.
|
|
* This method always returns the same instance of the service.
|
|
*
|
|
* @return Object A %baz_class% 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;
|
|
}
|
|
|
|
/**
|
|
* Gets the 'foo_bar' service.
|
|
*
|
|
* This service is shared.
|
|
* This method always returns the same instance of the service.
|
|
*
|
|
* @return Object A %foo_class% instance.
|
|
*/
|
|
protected function getFooBarService()
|
|
{
|
|
$class = $this->getParameter('foo_class');
|
|
return $this->services['foo_bar'] = new $class();
|
|
}
|
|
|
|
/**
|
|
* Gets the 'method_call1' service.
|
|
*
|
|
* This service is shared.
|
|
* This method always returns the same instance of the service.
|
|
*
|
|
* @return FooClass A FooClass 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;
|
|
}
|
|
|
|
/**
|
|
* Gets the 'factory_service' service.
|
|
*
|
|
* This service is shared.
|
|
* This method always returns the same instance of the service.
|
|
*
|
|
* @return Object An instance returned by foo.baz::getInstance().
|
|
*/
|
|
protected function getFactoryServiceService()
|
|
{
|
|
return $this->services['factory_service'] = $this->get('foo.baz')->getInstance();
|
|
}
|
|
|
|
/**
|
|
* Gets the alias_for_foo service alias.
|
|
*
|
|
* @return FooClass An instance of the foo service
|
|
*/
|
|
protected function getAliasForFooService()
|
|
{
|
|
return $this->get('foo');
|
|
}
|
|
|
|
/**
|
|
* Gets the default parameters.
|
|
*
|
|
* @return array An array of the default parameters
|
|
*/
|
|
protected function getDefaultParameters()
|
|
{
|
|
return array(
|
|
'baz_class' => 'BazClass',
|
|
'foo_class' => 'FooClass',
|
|
'foo' => 'bar',
|
|
);
|
|
}
|
|
}
|