コード例 #1
0
ファイル: CompilerFile.php プロジェクト: phalcon/zephir
 /**
  * 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;
 }
コード例 #2
0
ファイル: Compiler.php プロジェクト: chet0xhenry/zephir
 /**
  * Adds a function to the function definitions
  *
  * @param FunctionDefinition $func
  * @param array $statement
  */
 public function addFunction(FunctionDefinition $func, $statement = null)
 {
     $funcName = strtolower($func->getInternalName());
     if (isset($this->functionDefinitions[$funcName])) {
         throw new CompilerException("Function '" . $func->getCompleteName() . "' was defined more than one time", $statement);
     }
     $this->functionDefinitions[$funcName] = $func;
 }