From 4dbc1794591857c641f64f58fc7c431c9fb785df Mon Sep 17 00:00:00 2001 From: Felix Carmona Date: Fri, 14 Feb 2014 16:35:47 +0100 Subject: [PATCH] PhpDumper heritable --- .../DependencyInjection/Dumper/PhpDumper.php | 144 ++++++++++++------ 1 file changed, 97 insertions(+), 47 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index bd8a3a9622708..a72840a0a72c7 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -48,17 +48,17 @@ class PhpDumper extends Dumper */ const NON_FIRST_CHARS = 'abcdefghijklmnopqrstuvwxyz0123456789_'; - private $inlinedDefinitions; - private $definitionVariables; - private $referenceVariables; - private $variableCount; - private $reservedVariables = array('instance', 'class'); - private $expressionLanguage; + protected $inlinedDefinitions; + protected $definitionVariables; + protected $referenceVariables; + protected $variableCount; + protected $reservedVariables = array('instance', 'class'); + protected $expressionLanguage; /** * @var \Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\DumperInterface */ - private $proxyDumper; + protected $proxyDumper; /** * {@inheritDoc} @@ -128,7 +128,7 @@ public function dump(array $options = array()) * * @return ProxyDumper */ - private function getProxyDumper() + protected function getProxyDumper() { if (!$this->proxyDumper) { $this->proxyDumper = new NullDumper(); @@ -145,7 +145,7 @@ private function getProxyDumper() * * @return string */ - private function addServiceLocalTempVariables($cId, $definition) + protected function addServiceLocalTempVariables($cId, $definition) { static $template = " \$%s = %s;\n"; @@ -192,7 +192,7 @@ private function addServiceLocalTempVariables($cId, $definition) * * @return string */ - private function addProxyClasses() + protected function addProxyClasses() { /* @var $definitions Definition[] */ $definitions = array_filter( @@ -216,7 +216,7 @@ private function addProxyClasses() * * @return string */ - private function addServiceInclude($id, $definition) + protected function addServiceInclude($id, $definition) { $template = " require_once %s;\n"; $code = ''; @@ -249,7 +249,7 @@ private function addServiceInclude($id, $definition) * @throws RuntimeException When the factory definition is incomplete * @throws ServiceCircularReferenceException When a circular reference is detected */ - private function addServiceInlinedDefinitions($id, $definition) + protected function addServiceInlinedDefinitions($id, $definition) { $code = ''; $variableMap = $this->definitionVariables; @@ -311,7 +311,7 @@ private function addServiceInlinedDefinitions($id, $definition) * * @return string */ - private function addServiceReturn($id, $definition) + protected function addServiceReturn($id, $definition) { if ($this->isSimpleInstance($id, $definition)) { return " }\n"; @@ -331,7 +331,7 @@ private function addServiceReturn($id, $definition) * @throws InvalidArgumentException * @throws RuntimeException */ - private function addServiceInstance($id, $definition) + protected function addServiceInstance($id, $definition) { $class = $this->dumpValue($definition->getClass()); @@ -375,7 +375,7 @@ private function addServiceInstance($id, $definition) * * @return Boolean */ - private function isSimpleInstance($id, $definition) + protected function isSimpleInstance($id, $definition) { foreach (array_merge(array($definition), $this->getInlinedDefinitions($definition)) as $sDefinition) { if ($definition !== $sDefinition && !$this->hasReference($id, $sDefinition->getMethodCalls())) { @@ -399,7 +399,7 @@ private function isSimpleInstance($id, $definition) * * @return string */ - private function addServiceMethodCalls($id, $definition, $variableName = 'instance') + protected function addServiceMethodCalls($id, $definition, $variableName = 'instance') { $calls = ''; foreach ($definition->getMethodCalls() as $call) { @@ -414,7 +414,7 @@ private function addServiceMethodCalls($id, $definition, $variableName = 'instan return $calls; } - private function addServiceProperties($id, $definition, $variableName = 'instance') + protected function addServiceProperties($id, $definition, $variableName = 'instance') { $code = ''; foreach ($definition->getProperties() as $name => $value) { @@ -431,7 +431,7 @@ private function addServiceProperties($id, $definition, $variableName = 'instanc * @param Definition $definition * @return string */ - private function addServiceInlinedDefinitionsSetup($id, $definition) + protected function addServiceInlinedDefinitionsSetup($id, $definition) { $this->referenceVariables[$id] = new Variable('instance'); @@ -475,7 +475,7 @@ private function addServiceInlinedDefinitionsSetup($id, $definition) * * @return string */ - private function addServiceConfigurator($id, $definition, $variableName = 'instance') + protected function addServiceConfigurator($id, $definition, $variableName = 'instance') { if (!$callable = $definition->getConfigurator()) { return ''; @@ -507,7 +507,7 @@ private function addServiceConfigurator($id, $definition, $variableName = 'insta * * @return string */ - private function addService($id, $definition) + protected function addService($id, $definition) { $this->definitionVariables = new \SplObjectStorage(); $this->referenceVariables = array(); @@ -617,7 +617,7 @@ private function addService($id, $definition) * * @return string */ - private function addServices() + protected function addServices() { $publicServices = $privateServices = $synchronizers = ''; $definitions = $this->container->getDefinitions(); @@ -641,7 +641,7 @@ private function addServices() * @param string $id A service identifier * @param Definition $definition A Definition instance */ - private function addServiceSynchronizer($id, Definition $definition) + protected function addServiceSynchronizer($id, Definition $definition) { if (!$definition->isSynchronized()) { return; @@ -686,7 +686,7 @@ protected function synchronize{$this->camelize($id)}Service() EOF; } - private function addNewInstance($id, Definition $definition, $return, $instantiation) + protected function addNewInstance($id, Definition $definition, $return, $instantiation) { $class = $this->dumpValue($definition->getClass()); @@ -730,7 +730,7 @@ private function addNewInstance($id, Definition $definition, $return, $instantia * * @return string */ - private function startClass($class, $baseClass, $namespace) + protected 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" : ''; @@ -762,7 +762,7 @@ class $class extends $baseClass * * @return string */ - private function addConstructor() + protected function addConstructor() { $arguments = $this->container->getParameterBag()->all() ? 'new ParameterBag($this->getDefaultParameters())' : null; @@ -799,7 +799,7 @@ public function __construct() * * @return string */ - private function addFrozenConstructor() + protected function addFrozenConstructor() { $code = <<container->getDefinitions()) { return ''; @@ -871,7 +871,7 @@ private function addMethodMap() * * @return string */ - private function addAliases() + protected function addAliases() { if (!$aliases = $this->container->getAliases()) { if ($this->container->isFrozen()) { @@ -899,7 +899,7 @@ private function addAliases() * * @return string */ - private function addDefaultParametersMethod() + protected function addDefaultParametersMethod() { if (!$this->container->getParameterBag()->all()) { return ''; @@ -909,7 +909,23 @@ private function addDefaultParametersMethod() $code = ''; if ($this->container->isFrozen()) { - $code .= <<getCodeForGetParameter(); + $code .= $this->getCodeForHasParameter(); + $code .= $this->getCodeForSetParameter(); + $code .= $this->getCodeForGetParameterBag(); + } + + $code .= $this->getCodeForGetDefaultParameters($parameters); + + return $code; + } + + /** + * @return string + */ + protected function getCodeForGetParameter() + { + return <<parameters[\$name]; } +EOF; + } + + /** + * @return string + */ + protected function getCodeForHasParameter() + { + return <<parameters[\$name]) || array_key_exists(\$name, \$this->parameters); } +EOF; + } + + /** + * @return string + */ + protected function getCodeForSetParameter() + { + return <<parameterBag; } EOF; - } + } - $code .= << $value) { @@ -1014,7 +1064,7 @@ private function exportParameters($parameters, $path = '', $indent = 12) * * @return string */ - private function endClass() + protected function endClass() { return <<inlinedDefinitions->contains($definition)) { $definitions = array_merge( @@ -1108,7 +1158,7 @@ private function getInlinedDefinitions(Definition $definition) * * @return array */ - private function getDefinitionsFromArguments(array $arguments) + protected function getDefinitionsFromArguments(array $arguments) { $definitions = array(); foreach ($arguments as $argument) { @@ -1136,7 +1186,7 @@ private function getDefinitionsFromArguments(array $arguments) * * @return Boolean */ - private function hasReference($id, array $arguments, $deep = false, array $visited = array()) + protected function hasReference($id, array $arguments, $deep = false, array $visited = array()) { foreach ($arguments as $argument) { if (is_array($argument)) { @@ -1175,7 +1225,7 @@ private function hasReference($id, array $arguments, $deep = false, array $visit * * @throws RuntimeException */ - private function dumpValue($value, $interpolate = true) + protected function dumpValue($value, $interpolate = true) { if (is_array($value)) { $code = array(); @@ -1257,7 +1307,7 @@ private function dumpValue($value, $interpolate = true) * * @return string */ - private function dumpLiteralClass($class) + protected function dumpLiteralClass($class) { return '\\'.substr(str_replace('\\\\', '\\', $class), 1, -1); } @@ -1286,7 +1336,7 @@ public function dumpParameter($name) * * @return string */ - private function getServiceCall($id, Reference $reference = null) + protected function getServiceCall($id, Reference $reference = null) { if ('service_container' === $id) { return '$this'; @@ -1312,7 +1362,7 @@ private function getServiceCall($id, Reference $reference = null) * * @throws InvalidArgumentException */ - private function camelize($id) + protected function camelize($id) { $name = Container::camelize($id); @@ -1328,7 +1378,7 @@ private function camelize($id) * * @return string */ - private function getNextVariableName() + protected function getNextVariableName() { $firstChars = self::FIRST_CHARS; $firstCharsLength = strlen($firstChars); @@ -1361,7 +1411,7 @@ private function getNextVariableName() } } - private function getExpressionLanguage() + protected function getExpressionLanguage() { if (null === $this->expressionLanguage) { if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {