9
9
namespace Inhere \Validate \Utils ;
10
10
11
11
use Inhere \Validate \Filter \Filters ;
12
+ use Inhere \Validate \Filter \UserFilters ;
12
13
13
14
/**
14
15
* Trait DataFilteringTrait
17
18
trait DataFilteringTrait
18
19
{
19
20
/** @var array user custom filters */
20
- private static $ customFilters = [];
21
+ private $ _filters = [];
21
22
22
23
/** @var array filter aliases map */
23
24
private static $ filterAliases = [
@@ -95,19 +96,22 @@ protected function callStringCallback(string $filter, ...$args)
95
96
// if is alias name
96
97
$ filterName = isset (self ::$ filterAliases [$ filter ]) ? self ::$ filterAliases [$ filter ] : $ filter ;
97
98
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 )) {
101
101
$ value = $ callback (...$ args );
102
-
103
102
// if $filter is a custom method of the subclass.
104
103
} elseif (\method_exists ($ this , $ filter . 'Filter ' )) {
105
104
$ filter .= 'Filter ' ;
106
105
$ value = $ this ->$ filter (...$ args );
107
106
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}.
108
112
// $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 );
111
115
112
116
// it is function name
113
117
} elseif (\function_exists ($ filter )) {
@@ -123,34 +127,49 @@ protected function callStringCallback(string $filter, ...$args)
123
127
* custom filters
124
128
******************************************************************************/
125
129
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
+
126
143
/**
127
144
* @param string $name
128
145
* @param callable $filter
129
146
* @return $this
130
147
*/
131
- public function addCustomFilter (string $ name , callable $ filter ): self
148
+ public function addFilter (string $ name , callable $ filter ): self
132
149
{
133
- self :: $ customFilters [$ name ] = $ filter ;
150
+ $ this -> _filters [$ name ] = $ filter ;
134
151
return $ this ;
135
152
}
136
153
137
154
/**
138
155
* @param string $name
139
156
* @param callable $filter
157
+ * @return DataFilteringTrait
140
158
*/
141
- public static function setCustomFilter (string $ name , callable $ filter )
159
+ public function setFilter (string $ name , callable $ filter )
142
160
{
143
- self ::$ customFilters [$ name ] = $ filter ;
161
+ $ this ->_filters [$ name ] = $ filter ;
162
+ return $ this ;
144
163
}
145
164
146
165
/**
147
166
* @param string $name
148
167
* @return $this
149
168
*/
150
- public function delCustomFilter (string $ name ): self
169
+ public function delFilter (string $ name ): self
151
170
{
152
- if (isset (self :: $ customFilters [$ name ])) {
153
- unset(self :: $ customFilters [$ name ]);
171
+ if (isset ($ this -> _filters [$ name ])) {
172
+ unset($ this -> _filters [$ name ]);
154
173
}
155
174
156
175
return $ this ;
@@ -159,24 +178,24 @@ public function delCustomFilter(string $name): self
159
178
/**
160
179
* clear Filters
161
180
*/
162
- public static function clearCustomFilters ()
181
+ public function clearFilters ()
163
182
{
164
- self :: $ customFilters = [];
183
+ $ this -> _filters = [];
165
184
}
166
185
167
186
/**
168
187
* @return array
169
188
*/
170
- public static function getCustomFilters (): array
189
+ public function getFilters (): array
171
190
{
172
- return self :: $ customFilters ;
191
+ return $ this -> _filters ;
173
192
}
174
193
175
194
/**
176
195
* @param array $filters
177
196
*/
178
- public static function setCustomFilters (array $ filters )
197
+ public function setFilters (array $ filters )
179
198
{
180
- self :: $ customFilters = $ filters ;
199
+ $ this -> _filters = $ filters ;
181
200
}
182
201
}
0 commit comments