Neos\Eel\FlowQuery\Operations\Object\FilterOperation::evaluateOperator PHP Метод

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

Evaluate an operator
protected evaluateOperator ( mixed $value, string $operator, mixed $operand ) : boolean
$value mixed
$operator string
$operand mixed
Результат boolean
    protected function evaluateOperator($value, $operator, $operand)
    {
        switch ($operator) {
            case '=':
                return $value === $operand;
            case '!=':
                return $value !== $operand;
            case '<':
                return $value < $operand;
            case '<=':
                return $value <= $operand;
            case '>':
                return $value > $operand;
            case '>=':
                return $value >= $operand;
            case '$=':
                return strrpos($value, $operand) === strlen($value) - strlen($operand);
            case '^=':
                return strpos($value, $operand) === 0;
            case '*=':
                return strpos($value, $operand) !== false;
            case 'instanceof':
                if ($this->operandIsSimpleType($operand)) {
                    return $this->handleSimpleTypeOperand($operand, $value);
                } else {
                    return $value instanceof $operand;
                }
            case '!instanceof':
                if ($this->operandIsSimpleType($operand)) {
                    return !$this->handleSimpleTypeOperand($operand, $value);
                } else {
                    return !$value instanceof $operand;
                }
            default:
                return $value !== null;
        }
    }

Usage Example

 /**
  * {@inheritdoc}
  *
  * @param mixed $value
  * @param string $operator
  * @param mixed $operand
  * @return boolean
  */
 protected function evaluateOperator($value, $operator, $operand)
 {
     if ($operator === 'instanceof' && $value instanceof NodeInterface) {
         if ($this->operandIsSimpleType($operand)) {
             return $this->handleSimpleTypeOperand($operand, $value);
         } elseif ($operand === NodeInterface::class || $operand === Node::class) {
             return true;
         } else {
             $isOfType = $value->getNodeType()->isOfType($operand[0] === '!' ? substr($operand, 1) : $operand);
             return $operand[0] === '!' ? $isOfType === false : $isOfType;
         }
     } elseif ($operator === '!instanceof' && $value instanceof NodeInterface) {
         return !$this->evaluateOperator($value, 'instanceof', $operand);
     }
     return parent::evaluateOperator($value, $operator, $operand);
 }