-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathBinaryOperator.php
More file actions
76 lines (65 loc) · 1.83 KB
/
BinaryOperator.php
File metadata and controls
76 lines (65 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php declare(strict_types=1);
/*
* This file is part of php-cypher-dsl.
*
* Copyright (C) Wikibase Solutions
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace WikibaseSolutions\CypherDSL\Expressions\Operators;
use WikibaseSolutions\CypherDSL\Types\AnyType;
/**
* This class represents the application of a binary operator, such as "+", "/" and "*".
*/
abstract class BinaryOperator extends Operator
{
/**
* @var AnyType The left-hand of the expression
*/
private AnyType $left;
/**
* @var AnyType The right-hand of the expression
*/
private AnyType $right;
/**
* @param AnyType $left The left-hand of the expression
* @param AnyType $right The right-hand of the expression
*/
public function __construct(AnyType $left, AnyType $right)
{
$this->left = $left;
$this->right = $right;
}
/**
* Gets the left-hand of the expression.
*/
public function getLeft(): AnyType
{
return $this->left;
}
/**
* Gets the right-hand of the expression.
*/
public function getRight(): AnyType
{
return $this->right;
}
/**
* @inheritDoc
*/
public function toQuery(): string
{
$left = $this->shouldInsertParentheses($this->left) ?
"({$this->left->toQuery()})" :
$this->left->toQuery();
$right = $this->shouldInsertParentheses($this->right) ?
"({$this->right->toQuery()})" :
$this->right->toQuery();
return sprintf("%s %s %s", $left, $this->getOperator(), $right);
}
/**
* Returns the operator. For instance, this function would return "-" for the minus operator.
*/
abstract protected function getOperator(): string;
}