From bf401a074c02a303249f4713259b4b6b9cea9512 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 9 Jul 2015 23:55:13 +0900 Subject: [PATCH] [Refactoring] Split BinaryOp\BooleanOr --- src/Visitor/Expression.php | 41 +--------------- src/Visitor/Expression/BinaryOp/BooleanOr.php | 48 +++++++++++++++++++ 2 files changed, 50 insertions(+), 39 deletions(-) create mode 100644 src/Visitor/Expression/BinaryOp/BooleanOr.php diff --git a/src/Visitor/Expression.php b/src/Visitor/Expression.php index 72693a19..48f6a570 100644 --- a/src/Visitor/Expression.php +++ b/src/Visitor/Expression.php @@ -64,6 +64,8 @@ protected function factory($expr) return new Expression\BinaryOp\Mul(); case 'PhpParser\Node\Expr\BinaryOp\BitwiseXor': return new Expression\BinaryOp\BitwiseXor(); + case 'PhpParser\Node\Expr\BinaryOp\BooleanOr': + return new Expression\BinaryOp\BooleanOr(); } return false; @@ -85,11 +87,6 @@ public function compile($expr) return $this->passSymbol($expr); case 'PhpParser\Node\Expr\Variable': return $this->passExprVariable($expr); - /** - * Operators - */ - case 'PhpParser\Node\Expr\BinaryOp\BooleanOr': - return $this->passBinaryOpBooleanOr($expr); /** * Another */ @@ -430,40 +427,6 @@ protected function passUnaryMinus(Node\Expr\UnaryMinus $expr) return new CompiledExpression(); } - /** - * {expr} || {expr} - * - * @param Node\Expr\BinaryOp\BooleanOr $expr - * @return CompiledExpression - */ - protected function passBinaryOpBooleanOr(Node\Expr\BinaryOp\BooleanOr $expr) - { - $expression = new Expression($this->context); - $left = $expression->compile($expr->left); - - $expression = new Expression($this->context); - $right = $expression->compile($expr->right); - - switch ($left->getType()) { - case CompiledExpression::LNUMBER: - case CompiledExpression::DNUMBER: - case CompiledExpression::STRING: - case CompiledExpression::BOOLEAN: - case CompiledExpression::NULL: - switch ($right->getType()) { - case CompiledExpression::LNUMBER: - case CompiledExpression::DNUMBER: - case CompiledExpression::STRING: - case CompiledExpression::BOOLEAN: - case CompiledExpression::NULL: - return CompiledExpression::fromZvalValue($left->getValue() || $right->getValue()); - } - break; - } - - return new CompiledExpression(CompiledExpression::UNKNOWN); - } - /** * Convert lnumber scalar expr to CompiledExpression * diff --git a/src/Visitor/Expression/BinaryOp/BooleanOr.php b/src/Visitor/Expression/BinaryOp/BooleanOr.php new file mode 100644 index 00000000..a938da1d --- /dev/null +++ b/src/Visitor/Expression/BinaryOp/BooleanOr.php @@ -0,0 +1,48 @@ +compile($expr->left); + + $expression = new Expression($context); + $right = $expression->compile($expr->right); + + switch ($left->getType()) { + case CompiledExpression::LNUMBER: + case CompiledExpression::DNUMBER: + case CompiledExpression::STRING: + case CompiledExpression::BOOLEAN: + case CompiledExpression::NULL: + switch ($right->getType()) { + case CompiledExpression::LNUMBER: + case CompiledExpression::DNUMBER: + case CompiledExpression::STRING: + case CompiledExpression::BOOLEAN: + case CompiledExpression::NULL: + return CompiledExpression::fromZvalValue($left->getValue() || $right->getValue()); + } + break; + } + + return new CompiledExpression(CompiledExpression::UNKNOWN); + } +}