99namespace Inhere \Validate \Utils ;
1010
1111use Inhere \Validate \Filter \Filters ;
12+ use Inhere \Validate \Filter \UserFilters ;
1213
1314/**
1415 * Trait DataFilteringTrait
1718trait 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}
0 commit comments