@@ -171,7 +171,8 @@ protected function simpleFetchAndPrint() {
171171 * @return mixed The value as obtained from proper fetcher method.
172172 */
173173 protected function fetchVal ($ key ) {
174- if ($ special = $ this ->specialKey ($ key )) {
174+ $ special = $ this ->specialKey ($ key );
175+ if ($ special ) {
175176 return $ this ->fetchSpecial ($ special );
176177 } else {
177178 return $ this ->configRead ($ key );
@@ -238,6 +239,7 @@ protected function specialKey($search) {
238239 if (!$ callable ) {
239240 return false ;
240241 }
242+
241243 $ special = [
242244 'callable ' => $ callable ,
243245 ];
@@ -246,6 +248,7 @@ protected function specialKey($search) {
246248 if (isset ($ keyParts [1 ])) {
247249 $ special ['arg ' ] = $ keyParts [1 ];
248250 }
251+
249252 if (isset ($ keyParts [2 ])) {
250253 $ special ['subkey ' ] = $ keyParts [2 ];
251254 }
@@ -278,24 +281,23 @@ protected function fetchSpecial($special) {
278281 if (isset ($ special ['arg ' ])) {
279282 $ set = call_user_func ($ special ['callable ' ], $ special ['arg ' ]);
280283 } else {
281- $ allConfigCallable = str_replace (
282- '::config ' ,
284+ $ allConfigCallable = preg_replace (
285+ '/ ::config$/ ' ,
283286 '::configured ' ,
284287 $ special ['callable ' ],
288+ -1 ,
285289 $ replaceCount
286290 );
287- debug ($ allConfigCallable );
288- debug ($ replaceCount );
289291
290- $ set = [] ;
291- if ($ replaceCount && is_callable ($ allConfigCallable )) {
292+ $ set = null ;
293+ if ($ replaceCount && is_callable ($ allConfigCallable )) {
292294 foreach (call_user_func ($ allConfigCallable ) as $ configName ) {
293295 $ set [$ configName ] = call_user_func ($ special ['callable ' ], $ configName );
294296 }
295297 }
296298 }
297299
298- if (isset ($ special ['subkey ' ])) {
300+ if (isset ($ special ['subkey ' ]) && is_array ( $ set ) ) {
299301 return Hash::get ($ set , $ special ['subkey ' ]);
300302 } else {
301303 return $ set ;
0 commit comments