return $object[$field];
}
+ if (isset($object->$field)) {
+ return $object->$field;
+ }
+
+ // camelcase field name to support different variable naming conventions
+ $ccField = preg_replace_callback('/_(.?)/', function($matches) { return strtoupper($matches[1]); }, $field);
+
+ foreach ($accessors as $accessor) {
+ $accessor .= $ccField;
+
+
+ if ( ! method_exists($object, $accessor)) {
+ continue;
+ }
+
+ return $object->$accessor();
+ }
+
return $object->$field;
}
return false !== strpos(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
};
+ case Comparison::MEMBER_OF:
+ return function ($object) use ($field, $value) {
+ $fieldValues = ClosureExpressionVisitor::getObjectFieldValue($object, $field);
+ if (!is_array($fieldValues)) {
+ $fieldValues = iterator_to_array($fieldValues);
+ }
+ return in_array($value, $fieldValues);
+ };
+
+ case Comparison::STARTS_WITH:
+ return function ($object) use ($field, $value) {
+ return 0 === strpos(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
+ };
+
+ case Comparison::ENDS_WITH:
+ return function ($object) use ($field, $value) {
+ return $value === substr(ClosureExpressionVisitor::getObjectFieldValue($object, $field), -strlen($value));
+ };
+
+
default:
throw new \RuntimeException("Unknown comparison operator: " . $comparison->getOperator());
}