3.4.0
This commit is contained in:
@@ -26,6 +26,14 @@ class Collection extends Iterator implements Countable
|
||||
*/
|
||||
public static $filters = [];
|
||||
|
||||
/**
|
||||
* Whether the collection keys should be
|
||||
* treated as case-sensitive
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $caseSensitive = false;
|
||||
|
||||
/**
|
||||
* Pagination object
|
||||
* @var Pagination
|
||||
@@ -48,9 +56,12 @@ class Collection extends Iterator implements Countable
|
||||
* Constructor
|
||||
*
|
||||
* @param array $data
|
||||
* @param bool $caseSensitive Whether the collection keys should be
|
||||
* treated as case-sensitive
|
||||
*/
|
||||
public function __construct(array $data = [])
|
||||
public function __construct(array $data = [], bool $caseSensitive = false)
|
||||
{
|
||||
$this->caseSensitive = $caseSensitive;
|
||||
$this->set($data);
|
||||
}
|
||||
|
||||
@@ -72,11 +83,11 @@ class Collection extends Iterator implements Countable
|
||||
*/
|
||||
public function __get($key)
|
||||
{
|
||||
if (isset($this->data[$key])) {
|
||||
return $this->data[$key];
|
||||
if ($this->caseSensitive === true) {
|
||||
return $this->data[$key] ?? null;
|
||||
}
|
||||
|
||||
return $this->data[strtolower($key)] ?? null;
|
||||
return $this->data[$key] ?? $this->data[strtolower($key)] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -87,7 +98,12 @@ class Collection extends Iterator implements Countable
|
||||
*/
|
||||
public function __set(string $key, $value)
|
||||
{
|
||||
$this->data[strtolower($key)] = $value;
|
||||
if ($this->caseSensitive === true) {
|
||||
$this->data[$key] = $value;
|
||||
} else {
|
||||
$this->data[strtolower($key)] = $value;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -1243,7 +1259,7 @@ Collection::$filters['!^='] = [
|
||||
/**
|
||||
* Between Filter
|
||||
*/
|
||||
Collection::$filters['between'] = [
|
||||
Collection::$filters['between'] = Collection::$filters['..'] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::between($value, ...$test) === true;
|
||||
},
|
||||
@@ -1294,3 +1310,67 @@ Collection::$filters['maxwords'] = [
|
||||
Collection::$filters['minwords'] = [
|
||||
'validator' => 'V::minWords',
|
||||
];
|
||||
|
||||
/**
|
||||
* Date Equals Filter
|
||||
*/
|
||||
Collection::$filters['date =='] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::date($value, '==', $test);
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Date Not Equals Filter
|
||||
*/
|
||||
Collection::$filters['date !='] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::date($value, '!=', $test);
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Date More Filter
|
||||
*/
|
||||
Collection::$filters['date >'] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::date($value, '>', $test);
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Date Min Filter
|
||||
*/
|
||||
Collection::$filters['date >='] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::date($value, '>=', $test);
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Date Less Filter
|
||||
*/
|
||||
Collection::$filters['date <'] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::date($value, '<', $test);
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Date Max Filter
|
||||
*/
|
||||
Collection::$filters['date <='] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::date($value, '<=', $test);
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Date Between Filter
|
||||
*/
|
||||
Collection::$filters['date between'] = Collection::$filters['date ..'] = [
|
||||
'validator' => function ($value, $test) {
|
||||
return V::date($value, '>=', $test[0]) &&
|
||||
V::date($value, '<=', $test[1]);
|
||||
}
|
||||
];
|
||||
|
Reference in New Issue
Block a user