/** * Compiles a function * * @param CompilationContext $compilationContext * @param FunctionDefinition $functionDefinition */ public function compileFunction(CompilationContext $compilationContext, FunctionDefinition $functionDefinition) { /** Make sure we do not produce calls like ZEPHIR_CALL_SELF */ $bakClassDefinition = $compilationContext->classDefinition; $compilationContext->classDefinition = null; $compilationContext->currentMethod = $functionDefinition; $codePrinter = $compilationContext->codePrinter; $codePrinter->output('PHP_FUNCTION(' . $functionDefinition->getInternalName() . ') {'); $functionDefinition->compile($compilationContext); $codePrinter->output('}'); $codePrinter->outputBlankLine(); /** Restore */ $compilationContext->classDefinition = $bakClassDefinition; $compilationContext->currentMethod = null; }