예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 /** @test */
 public function createBoolean()
 {
     $string = Primitive::create(false);
     $this->assertInstanceOf('Superruzafa\\Rules\\Expression\\Primitive\\Boolean', $string);
     $this->assertFalse($string->evaluate());
 }