/** * Creates a new Operator * * @param Expression $operand... */ public function __construct() { $operands = func_get_args(); array_walk($operands, function (&$operand) { if (!$operand instanceof Expression) { $operand = Primitive::create($operand); } }); $this->operands = $operands; }
/** * Parses the operands defined in an XML element and adds them to an operator * * @param Operator $operator * @param \DOMElement $operatorElement * @param \DOMXPath $xpath * @return Operator */ protected function parseOperands(Operator $operator, \DOMElement $operatorElement, \DOMXPath $xpath) { foreach ($operatorElement->attributes as $attribute) { $operator->addOperand(Primitive::create($attribute->nodeValue)); } $nodes = $xpath->query(sprintf('*[namespace-uri() = "%s"]', XmlLoader::XMLNS_LOADER), $operatorElement); foreach ($nodes as $node) { $parser = OperatorParserFactoryMethod::create($node->localName); $operator->addOperand($parser->parse($node, $xpath)); } return $operator; }
/** @test */ public function createBoolean() { $string = Primitive::create(false); $this->assertInstanceOf('Superruzafa\\Rules\\Expression\\Primitive\\Boolean', $string); $this->assertFalse($string->evaluate()); }