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
* * 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;