Zephir\ClassDefinition::setIsFinal PHP Method

setIsFinal() public method

Sets if the class is final
public setIsFinal ( boolean $final )
$final boolean
    public function setIsFinal($final)
    {
        $this->final = (bool) $final;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Creates a closure
  *
  * @param array $expression
  * @param CompilationContext $compilationContext
  * @return CompiledExpression
  * @throws \Zephir\CompilerException
  */
 public function compile(array $expression, CompilationContext $compilationContext)
 {
     $classDefinition = new ClassDefinition($compilationContext->config->get('namespace'), self::$id . '__closure');
     $classDefinition->setIsFinal(true);
     $compilerFile = new CompilerFileAnonymous($classDefinition, $compilationContext->config, $compilationContext->logger);
     $compilationContext->compiler->addClassDefinition($compilerFile, $classDefinition);
     /**
      * Builds parameters using the only parameter available
      */
     $parameters = new ClassMethodParameters(array(array('type' => 'parameter', 'name' => $expression['left']['value'], 'const' => 0, 'data-type' => 'variable', 'mandatory' => 0, 'reference' => 0, 'file' => $expression['left']['file'], 'line' => $expression['left']['line'], 'char' => $expression['left']['char'])));
     $statementBlock = new StatementsBlockBuilder(array(new ReturnStatementBuilder(new RawExpressionBuilder($expression['right']))));
     $block = $statementBlock->get();
     $classMethod = new ClassMethod($classDefinition, array('public', 'final'), '__invoke', $parameters, new StatementsBlock($block), null, null, $expression);
     $classDefinition->addMethod($classMethod, $block);
     $compilationContext->headersManager->add('kernel/object');
     if ($this->expecting) {
         if ($this->expectingVariable) {
             $symbolVariable = $this->expectingVariable;
         } else {
             $symbolVariable = $compilationContext->symbolTable->getTempVariableForWrite('variable', $compilationContext, $expression);
         }
     } else {
         $symbolVariable = $compilationContext->symbolTable->getTempVariableForWrite('variable', $compilationContext, $expression);
     }
     $symbolVariable->initVariant($compilationContext);
     $compilationContext->codePrinter->output('zephir_create_closure_ex(' . $symbolVariable->getName() . ', NULL, ' . $classDefinition->getClassEntry() . ', SS("__invoke") TSRMLS_CC);');
     self::$id++;
     return new CompiledExpression('variable', $symbolVariable->getRealName(), $expression);
 }
All Usage Examples Of Zephir\ClassDefinition::setIsFinal