@@ -12,6 +12,39 @@ function ($base) {
1212 return $getFromArray ($base , $key );
1313 }
1414 };
15+ $fallbackDot = function ($base , $key ) use ($getCallable ) {
16+ if (is_string ($base )) {
17+ if ($key == = 'substr' || $key == = 'slice' ) {
18+ return function ($start , $length = null ) use ($base ) {
19+ return func_num_args () == = 1 ? substr ($base , $start ) : substr ($base , $start , $length );
20+ };
21+ }
22+ if ($key == = 'charAt' ) {
23+ return function ($pos ) use ($base ) {
24+ return substr ($base , $pos , 1 );
25+ };
26+ }
27+ if ($key == = 'indexOf' ) {
28+ return function ($needle ) use ($base ) {
29+ $pos = strpos ($base , $needle );
30+
31+ return $pos == = false ? -1 : $pos ;
32+ };
33+ }
34+ if ($key == = 'toUpperCase' ) {
35+ return function () use ($base ) {
36+ return strtoupper ($base );
37+ };
38+ }
39+ if ($key == = 'toLowerCase' ) {
40+ return function () use ($base ) {
41+ return strtolower ($base );
42+ };
43+ }
44+ }
45+
46+ return $getCallable ($base , $key );
47+ };
1548 foreach (array_slice (func_get_args (), 1 ) as $key ) {
1649 $base = is_array ($base )
1750 ? $getFromArray ($base , $key )
@@ -26,7 +59,7 @@ function ($base) {
2659 )
2760 )
2861 )
29- : $getCallable ($base , $key )
62+ : $fallbackDot ($base , $key )
3063 );
3164 }
3265
0 commit comments