PHPSA\Definition\ClosureDefinition::preCompile PHP Method

preCompile() public method

public preCompile ( Context $context )
$context PHPSA\Context
    public function preCompile(Context $context)
    {
        if ($this->statement->uses) {
            /**
             * Store variables from User to next restore Context
             */
            foreach ($this->statement->uses as $variable) {
                $variable = $context->getSymbol($variable->var);
                if ($variable) {
                    $variable->incGets();
                    $this->symbolTable->add(clone $variable);
                }
            }
        }
    }

Usage Example

Example #1
0
 /**
  * @param \PhpParser\Node\Expr\Closure $expr
  * @param Context $context
  * @return mixed
  */
 protected function compile($expr, Context $context)
 {
     $closure = new ClosureDefinition($expr);
     $closure->setFilepath($context->getFilepath());
     $closure->preCompile(clone $context);
     return new CompiledExpression(CompiledExpression::CALLABLE_TYPE, $closure);
 }