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

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

{expr} + {expr}
protected compile ( PhpParser\Node\Expr\BinaryOp\Plus $expr, Context $context ) : CompiledExpression
$expr PhpParser\Node\Expr\BinaryOp\Plus
$context PHPSA\Context
Результат PHPSA\CompiledExpression
    protected function compile($expr, Context $context)
    {
        $left = $context->getExpressionCompiler()->compile($expr->left);
        $right = $context->getExpressionCompiler()->compile($expr->right);
        switch ($left->getType()) {
            case CompiledExpression::INTEGER:
                switch ($right->getType()) {
                    case CompiledExpression::INTEGER:
                        /**
                         * php -r "var_dump(1 + 1);" int(2)
                         */
                        return new CompiledExpression(CompiledExpression::INTEGER, $left->getValue() + $right->getValue());
                    case CompiledExpression::DOUBLE:
                        /**
                         * php -r "var_dump(1 + 1.0);" double(2)
                         */
                        return new CompiledExpression(CompiledExpression::DOUBLE, $left->getValue() + $right->getValue());
                }
                break;
            case CompiledExpression::DOUBLE:
                switch ($right->getType()) {
                    case CompiledExpression::INTEGER:
                    case CompiledExpression::DOUBLE:
                        /**
                         * php -r "var_dump(1.0 + 1);"   double(2)
                         * php -r "var_dump(1.0 + 1.0);" double(2)
                         */
                        return new CompiledExpression(CompiledExpression::DOUBLE, $left->getValue() + $right->getValue());
                }
        }
        return new CompiledExpression();
    }