add namespace parameter to PhpDumper::dump

This commit is contained in:
Vitaliy Zakharov 2013-05-23 01:21:30 +06:00 committed by Fabien Potencier
parent f731d99384
commit 7d51be6d06
3 changed files with 9 additions and 4 deletions

View File

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

View File

@ -31,7 +31,7 @@ class PhpDumperTest extends \PHPUnit_Framework_TestCase
$dumper = new PhpDumper($container = new ContainerBuilder()); $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.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(); $container = new ContainerBuilder();
new PhpDumper($container); new PhpDumper($container);

View File

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