/** * Compile given component's Node to string * * @param ComponentNode $node * @param ComponentDefinition|PhpTemplateComponentDefinition $definition * @param SourceCompilerInterface $sourceCompiler * @return string */ public function compileComponent(ComponentNode $node, ComponentDefinition $definition, SourceCompilerInterface $sourceCompiler) { if ($node instanceof ContainerComponentNode) { $content = $sourceCompiler->buildContentClosure($node->innerNodes); } else { $content = null; } return sprintf(static::CALL_CODE_TEMPLATE, var_export(realpath($definition->getFile()), true), $sourceCompiler->compileParametersArray($node->parameters), $content ? $sourceCompiler->compileNode($content) : 'null'); }