merged branch zakharovvi/dependencyinjection_phpdumper_namespace (PR #8119)

This PR was submitted for the 2.3 branch but it was merged into the master branch instead (closes #8119).

Discussion
----------

[DependencyInjection] add namespace parameter to PhpDumper::dump

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

97320a5 [DependencyInjection] add namespace parameter to PhpDumper::dump
This commit is contained in:
Fabien Potencier 2013-06-13 09:31:57 +02:00
commit 6f77195622
3 changed files with 9 additions and 4 deletions

View File

@ -86,6 +86,7 @@ class PhpDumper extends Dumper
*
* * class: The class name
* * base_class: The base class name
* * namespace: The class namespace
*
* @param array $options An array of options
*
@ -98,9 +99,10 @@ class PhpDumper extends Dumper
$options = array_merge(array(
'class' => 'ProjectServiceContainer',
'base_class' => 'Container',
'namespace' => '',
), $options);
$code = $this->startClass($options['class'], $options['base_class']);
$code = $this->startClass($options['class'], $options['base_class'], $options['namespace']);
if ($this->container->isFrozen()) {
$code .= $this->addFrozenConstructor();
@ -703,16 +705,18 @@ EOF;
*
* @param string $class Class name
* @param string $baseClass The name of the base class
* @param string $namespace The class namespace
*
* @return string
*/
private function startClass($class, $baseClass)
private function startClass($class, $baseClass, $namespace)
{
$bagClass = $this->container->isFrozen() ? 'use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;' : 'use Symfony\Component\DependencyInjection\ParameterBag\\ParameterBag;';
$namespaceLine = $namespace ? "namespace $namespace;\n" : '';
return <<<EOF
<?php
$namespaceLine
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;

View File

@ -31,7 +31,7 @@ class PhpDumperTest extends \PHPUnit_Framework_TestCase
$dumper = new PhpDumper($container = new ContainerBuilder());
$this->assertStringEqualsFile(self::$fixturesPath.'/php/services1.php', $dumper->dump(), '->dump() dumps an empty container as an empty PHP class');
$this->assertStringEqualsFile(self::$fixturesPath.'/php/services1-1.php', $dumper->dump(array('class' => 'Container', 'base_class' => 'AbstractContainer')), '->dump() takes a class and a base_class options');
$this->assertStringEqualsFile(self::$fixturesPath.'/php/services1-1.php', $dumper->dump(array('class' => 'Container', 'base_class' => 'AbstractContainer', 'namespace' => 'Symfony\Component\DependencyInjection\Dump')), '->dump() takes a class and a base_class options');
$container = new ContainerBuilder();
new PhpDumper($container);

View File

@ -1,4 +1,5 @@
<?php
namespace Symfony\Component\DependencyInjection\Dump;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Container;