private function formatPhp($statement, $args, $self = NULL) { $that = $this; array_walk_recursive($args, function (&$val) use($self, $that) { if ($val instanceof Statement) { $val = new PhpLiteral($that->formatStatement($val, $self)); } elseif (!is_string($val)) { return; } elseif ($val === '@' . ContainerBuilder::THIS_CONTAINER) { $val = new PhpLiteral('$this'); } elseif ($service = $that->getServiceName($val, $self)) { if ($service === $self) { $val = new PhpLiteral('$service'); } elseif ($that->definitions[$service]->shared) { $val = new PhpLiteral('$this->' . PhpHelpers::formatMember($service)); } else { $val = new PhpLiteral('$this->' . PhpHelpers::formatMember('create' . ucfirst($service)) . '()'); } } }); return PhpHelpers::formatArgs($statement, $args); }