Generates Service local temp variables.
string $cId:
string $definition:
string
private function addServiceLocalTempVariables($cId, $definition) {
static $template = " \$%s = %s;\n";
$localDefinitions = array_merge(array(
$definition,
), $this
->getInlinedDefinitions($definition));
$calls = $behavior = array();
foreach ($localDefinitions as $iDefinition) {
$this
->getServiceCallsFromArguments($iDefinition
->getArguments(), $calls, $behavior);
$this
->getServiceCallsFromArguments($iDefinition
->getMethodCalls(), $calls, $behavior);
$this
->getServiceCallsFromArguments($iDefinition
->getProperties(), $calls, $behavior);
}
$code = '';
foreach ($calls as $id => $callCount) {
if ('service_container' === $id || $id === $cId) {
continue;
}
if ($callCount > 1) {
$name = $this
->getNextVariableName();
$this->referenceVariables[$id] = new Variable($name);
if (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE === $behavior[$id]) {
$code .= sprintf($template, $name, $this
->getServiceCall($id));
}
else {
$code .= sprintf($template, $name, $this
->getServiceCall($id, new Reference($id, ContainerInterface::NULL_ON_INVALID_REFERENCE)));
}
}
}
if ('' !== $code) {
$code .= "\n";
}
return $code;
}