PHPSA\Compiler\Expression\Operators\InstanceOfOp::compile PHP Метод

compile() защищенный Метод

$a instanceof Node $expr->expr instance of $expr->class
protected compile ( PhpParser\Node\Expr\Instanceof_ $expr, Context $context ) : CompiledExpression
$expr PhpParser\Node\Expr\Instanceof_
$context PHPSA\Context
Результат PHPSA\CompiledExpression
    protected function compile($expr, Context $context)
    {
        $leftCompiledExpression = $context->getExpressionCompiler()->compile($expr->expr);
        $rightCompiledExpression = $context->getExpressionCompiler()->compile($expr->class);
        if ($leftCompiledExpression->isObject() && $rightCompiledExpression->isObject()) {
            $leftVariable = $leftCompiledExpression->getVariable();
            $rightVariable = $rightCompiledExpression->getVariable();
            /**
             * $a = new A();
             * $b = $a;
             *
             * $a instanceof $b
             */
            if ($leftVariable && $rightVariable) {
                if ($leftVariable->isReferenced() && $leftVariable->getReferencedTo() instanceof $rightVariable) {
                    return new CompiledExpression(CompiledExpression::BOOLEAN, true);
                }
            }
        }
        /**
         * Anyway this operator will return BOOLEAN
         */
        return new CompiledExpression(CompiledExpression::BOOLEAN);
    }
InstanceOfOp