Skip to content

Commit 35e0dcf

Browse files
committed
update some logic
1 parent a08b48f commit 35e0dcf

File tree

5 files changed

+61
-25
lines changed

5 files changed

+61
-25
lines changed

src/Filter/Filters.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
*/
1515
final class Filters
1616
{
17+
// TODO manage aliases
18+
1719
/**
1820
* don't allow create instance.
1921
*/

src/Filter/Filtration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public function reset(bool $clearFilters = false): self
153153
$this->_data = $this->_rules = [];
154154

155155
if ($clearFilters) {
156-
self::clearCustomFilters();
156+
$this->clearFilters();
157157
}
158158

159159
return $this;

src/Filter/UserFilters.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,24 @@
1414
*/
1515
final class UserFilters
1616
{
17-
/** @var array user custom filters */
17+
/**
18+
* @var array user custom filters
19+
*/
1820
private static $filters = [];
1921

22+
/**
23+
* @param string $name
24+
* @return null|callable
25+
*/
26+
public static function get(string $name)
27+
{
28+
if (isset(self::$filters[$name])) {
29+
return self::$filters[$name];
30+
}
31+
32+
return null;
33+
}
34+
2035
/**
2136
* @param string $name
2237
* @param callable $filter

src/Utils/DataFilteringTrait.php

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
namespace Inhere\Validate\Utils;
1010

1111
use Inhere\Validate\Filter\Filters;
12+
use Inhere\Validate\Filter\UserFilters;
1213

1314
/**
1415
* Trait DataFilteringTrait
@@ -17,7 +18,7 @@
1718
trait DataFilteringTrait
1819
{
1920
/** @var array user custom filters */
20-
private static $customFilters = [];
21+
private $_filters = [];
2122

2223
/** @var array filter aliases map */
2324
private static $filterAliases = [
@@ -95,19 +96,22 @@ protected function callStringCallback(string $filter, ...$args)
9596
// if is alias name
9697
$filterName = isset(self::$filterAliases[$filter]) ? self::$filterAliases[$filter] : $filter;
9798

98-
// if $filter is a custom add callback in the property {@see $_filters}.
99-
if (isset(self::$customFilters[$filterName])) {
100-
$callback = self::$customFilters[$filterName];
99+
// if $filter is a custom by addFiler()
100+
if ($callback = $this->getFilter($filter)) {
101101
$value = $callback(...$args);
102-
103102
// if $filter is a custom method of the subclass.
104103
} elseif (\method_exists($this, $filter . 'Filter')) {
105104
$filter .= 'Filter';
106105
$value = $this->$filter(...$args);
107106

107+
// if $filter is a custom add callback in the property {@see $_filters}.
108+
} elseif ($callback = UserFilters::get($filter)) {
109+
$value = $callback(...$args);
110+
111+
// if $filter is a custom add callback in the property {@see $_filters}.
108112
// $filter is a method of the class 'FilterList'
109-
} elseif (\method_exists(Filters::class, $filter)) {
110-
$value = Filters::$filter(...$args);
113+
} elseif (\method_exists(Filters::class, $filterName)) {
114+
$value = Filters::$filterName(...$args);
111115

112116
// it is function name
113117
} elseif (\function_exists($filter)) {
@@ -123,34 +127,49 @@ protected function callStringCallback(string $filter, ...$args)
123127
* custom filters
124128
******************************************************************************/
125129

130+
/**
131+
* @param string $name
132+
* @return callable|null
133+
*/
134+
public function getFilter(string $name)
135+
{
136+
if (isset($this->_filters[$name])) {
137+
return $this->_filters[$name];
138+
}
139+
140+
return null;
141+
}
142+
126143
/**
127144
* @param string $name
128145
* @param callable $filter
129146
* @return $this
130147
*/
131-
public function addCustomFilter(string $name, callable $filter): self
148+
public function addFilter(string $name, callable $filter): self
132149
{
133-
self::$customFilters[$name] = $filter;
150+
$this->_filters[$name] = $filter;
134151
return $this;
135152
}
136153

137154
/**
138155
* @param string $name
139156
* @param callable $filter
157+
* @return DataFilteringTrait
140158
*/
141-
public static function setCustomFilter(string $name, callable $filter)
159+
public function setFilter(string $name, callable $filter)
142160
{
143-
self::$customFilters[$name] = $filter;
161+
$this->_filters[$name] = $filter;
162+
return $this;
144163
}
145164

146165
/**
147166
* @param string $name
148167
* @return $this
149168
*/
150-
public function delCustomFilter(string $name): self
169+
public function delFilter(string $name): self
151170
{
152-
if (isset(self::$customFilters[$name])) {
153-
unset(self::$customFilters[$name]);
171+
if (isset($this->_filters[$name])) {
172+
unset($this->_filters[$name]);
154173
}
155174

156175
return $this;
@@ -159,24 +178,24 @@ public function delCustomFilter(string $name): self
159178
/**
160179
* clear Filters
161180
*/
162-
public static function clearCustomFilters()
181+
public function clearFilters()
163182
{
164-
self::$customFilters = [];
183+
$this->_filters = [];
165184
}
166185

167186
/**
168187
* @return array
169188
*/
170-
public static function getCustomFilters(): array
189+
public function getFilters(): array
171190
{
172-
return self::$customFilters;
191+
return $this->_filters;
173192
}
174193

175194
/**
176195
* @param array $filters
177196
*/
178-
public static function setCustomFilters(array $filters)
197+
public function setFilters(array $filters)
179198
{
180-
self::$customFilters = $filters;
199+
$this->_filters = $filters;
181200
}
182201
}

src/ValidationTrait.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,13 +350,13 @@ protected function valueValidate(string $field, $value, $validator, array $args,
350350
if ($callback = $this->getValidator($validator)) {
351351
$args[] = $this->data;
352352
$passed = $callback($value, ...$args);
353+
// if $validator is a custom method of the subclass.
354+
} elseif (\method_exists($this, $method = $validator . 'Validator')) {
355+
$passed = $this->$method($value, ...$args);
353356
// if $validator is a custom validator {@see $_validators}.
354357
} elseif ($callback = UserValidators::get($validator)) {
355358
$args[] = $this->data;
356359
$passed = $callback($value, ...$args);
357-
// if $validator is a custom method of the subclass.
358-
} elseif (\method_exists($this, $method = $validator . 'Validator')) {
359-
$passed = $this->$method($value, ...$args);
360360
} elseif (\method_exists(Validators::class, $realName)) {
361361
$passed = Validators::$realName($value, ...$args);
362362
} elseif (\function_exists($validator)) { // it is function name

0 commit comments

Comments
 (0)