8
8
9
9
class BoundMethodAccessor extends BoundMethod
10
10
{
11
- public static function getMethodDependencies ($ container , $ callback , array $ inputData = [])
11
+ public static function getMethodDependencies ($ callback , array $ inputData = [])
12
12
{
13
- return parent ::getMethodDependencies ($ container , $ callback , $ inputData );
13
+ return parent ::getMethodDependencies ($ callback , $ inputData );
14
+ }
15
+
16
+ public static function isCallableWithAtSign ($ callback )
17
+ {
18
+ return parent ::isCallableWithAtSign ($ callback );
14
19
}
15
20
}
16
21
@@ -33,50 +38,50 @@ class BoundMethodTest extends TestCase
33
38
{
34
39
public function testBoundMethodAccessor ()
35
40
{
36
- $ container = new Container ();
41
+ BoundMethodAccessor:: setContainer ( new Container () );
37
42
38
43
$ defaulty = function ($ a , $ b = 'default b ' , $ c = 'default c ' ) {
39
44
};
40
45
41
- $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ defaulty , ['a ' , 'b ' , 'c ' ]);
46
+ $ args = BoundMethodAccessor::getMethodDependencies ($ defaulty , ['a ' , 'b ' , 'c ' ]);
42
47
$ this ->assertSame (['a ' , 'b ' , 'c ' ], $ args );
43
48
44
- $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ defaulty , ['a ' , 'b ' ]);
49
+ $ args = BoundMethodAccessor::getMethodDependencies ($ defaulty , ['a ' , 'b ' ]);
45
50
$ this ->assertSame (['a ' , 'b ' , 'default c ' ], $ args );
46
51
47
- $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ defaulty , ['a ' , 'b ' , null ]);
52
+ $ args = BoundMethodAccessor::getMethodDependencies ($ defaulty , ['a ' , 'b ' , null ]);
48
53
$ this ->assertSame (['a ' , 'b ' , null ], $ args );
49
54
50
- $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ defaulty , ['a ' , null ]);
55
+ $ args = BoundMethodAccessor::getMethodDependencies ($ defaulty , ['a ' , null ]);
51
56
$ this ->assertSame (['a ' , null , 'default c ' ], $ args );
52
57
}
53
58
54
59
public function testEndInjection ()
55
60
{
56
- $ container = new Container ();
61
+ BoundMethodAccessor:: setContainer ( new Container () );
57
62
58
63
$ injected = function ($ a , $ b = 'default b ' , ContainerBoundMethodStub $ c ) {
59
64
};
60
65
61
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ injected , ['a ' ]);
66
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ injected , ['a ' ]);
62
67
$ this ->assertEquals ('a ' , $ a );
63
68
$ this ->assertEquals ('default b ' , $ b );
64
69
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ c );
65
70
$ this ->assertArrayNotHasKey (4 , $ args );
66
71
67
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ injected , [null , null ]);
72
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ injected , [null , null ]);
68
73
$ this ->assertNull ($ a );
69
74
$ this ->assertNull ($ b );
70
75
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ c );
71
76
$ this ->assertArrayNotHasKey (4 , $ args );
72
77
73
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ injected , [null , null ]);
78
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ injected , [null , null ]);
74
79
$ this ->assertNull ($ a );
75
80
$ this ->assertNull ($ b );
76
81
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ c );
77
82
$ this ->assertArrayNotHasKey (4 , $ args );
78
83
79
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ injected , [
84
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ injected , [
80
85
'a ' => 'passed a ' ,
81
86
'b ' => 'value b ' ,
82
87
'junk ' => 'junk ' ,
@@ -86,7 +91,7 @@ public function testEndInjection()
86
91
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ c );
87
92
$ this ->assertArrayNotHasKey (4 , $ args );
88
93
89
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ injected , [
94
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ injected , [
90
95
'a ' => 'passed a ' ,
91
96
'junk ' => 'junk ' ,
92
97
]);
@@ -98,59 +103,75 @@ public function testEndInjection()
98
103
99
104
public function testCallingWithNoArgs ()
100
105
{
101
- $ container = new Container ();
106
+ BoundMethodAccessor:: setContainer ( new Container () );
102
107
$ callee = function () {
103
108
};
104
109
105
- $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['a ' , 'b ' , 'c ' ]);
110
+ $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['a ' , 'b ' , 'c ' ]);
106
111
$ this ->assertSame (['a ' , 'b ' , 'c ' ], $ args );
107
112
108
- $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['key_a ' => 'value_a ' , 'key_b ' => 'value_b ' ]);
113
+ $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['key_a ' => 'value_a ' , 'key_b ' => 'value_b ' ]);
109
114
$ this ->assertSame (['key_a ' => 'value_a ' , 'key_b ' => 'value_b ' ], $ args );
110
115
}
111
116
112
117
public function testCanInjectAtMiddle ()
113
118
{
114
- $ container = new Container ();
119
+ BoundMethodAccessor:: setContainer ( new Container () );
115
120
$ callee = function ($ a , ContainerBoundMethodStub $ b , $ c = 'default c ' ) {
116
121
};
117
122
118
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['a ' => 'passed a ' , 'junk ' => 'junk ' ]);
123
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['a ' => 'passed a ' , 'junk ' => 'junk ' ]);
119
124
$ this ->assertEquals ('passed a ' , $ a );
120
125
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ b );
121
126
$ this ->assertEquals ('default c ' , $ c );
122
127
$ this ->assertArrayNotHasKey (4 , $ args );
123
128
124
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['c ' => 'value c ' , 'junk ' => 'junk ' , 'a ' => 'passed a ' ]);
129
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['c ' => 'value c ' , 'junk ' => 'junk ' , 'a ' => 'passed a ' ]);
125
130
$ this ->assertEquals ('passed a ' , $ a );
126
131
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ b );
127
132
$ this ->assertEquals ('value c ' , $ c );
128
133
$ this ->assertArrayNotHasKey (4 , $ args );
129
134
130
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['passed a ' , 'value c ' ]);
135
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['passed a ' , 'value c ' ]);
131
136
$ this ->assertEquals ('passed a ' , $ a );
132
137
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ b );
133
138
$ this ->assertEquals ('value c ' , $ c );
134
139
$ this ->assertArrayNotHasKey (4 , $ args );
135
140
136
141
$ obj = new ContainerBoundMethodStub ;
137
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['passed a ' , $ obj ]);
142
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['passed a ' , $ obj ]);
138
143
$ this ->assertEquals ('passed a ' , $ a );
139
144
$ this ->assertSame ($ obj , $ b );
140
145
$ this ->assertEquals ('default c ' , $ c );
141
146
$ this ->assertArrayNotHasKey (4 , $ args );
142
147
143
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['passed a ' , $ obj , 'passed c ' ]);
148
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['passed a ' , $ obj , 'passed c ' ]);
144
149
$ this ->assertEquals ('passed a ' , $ a );
145
150
$ this ->assertSame ($ obj , $ b );
146
151
$ this ->assertEquals ('passed c ' , $ c );
147
152
$ this ->assertArrayNotHasKey (4 , $ args );
148
153
149
154
$ stub2 = new ContainerBoundMethodStub2 ;
150
- [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ container , $ callee , ['passed a ' , $ stub2 ]);
155
+ [$ a , $ b , $ c ] = $ args = BoundMethodAccessor::getMethodDependencies ($ callee , ['passed a ' , $ stub2 ]);
151
156
$ this ->assertEquals ('passed a ' , $ a );
152
157
$ this ->assertInstanceOf (ContainerBoundMethodStub::class, $ b );
153
158
$ this ->assertSame ($ stub2 , $ c );
154
159
$ this ->assertArrayNotHasKey (4 , $ args );
155
160
}
161
+
162
+ public function testIsCallableWithAtSign ()
163
+ {
164
+ $ this ->assertTrue (BoundMethodAccessor::isCallableWithAtSign ('@ ' ));
165
+ $ this ->assertTrue (BoundMethodAccessor::isCallableWithAtSign ('a@ ' ));
166
+ $ this ->assertTrue (BoundMethodAccessor::isCallableWithAtSign ('@a ' ));
167
+ $ this ->assertTrue (BoundMethodAccessor::isCallableWithAtSign ('a@a ' ));
168
+ $ this ->assertTrue (BoundMethodAccessor::isCallableWithAtSign ('1@ ' ));
169
+ $ this ->assertTrue (BoundMethodAccessor::isCallableWithAtSign ('@1 ' ));
170
+ $ this ->assertTrue (BoundMethodAccessor::isCallableWithAtSign ('1@1 ' ));
171
+
172
+ $ this ->assertFalse (BoundMethodAccessor::isCallableWithAtSign ('I_HaveNoAtSign ' ));
173
+ $ this ->assertFalse (BoundMethodAccessor::isCallableWithAtSign ('' ));
174
+ $ this ->assertFalse (BoundMethodAccessor::isCallableWithAtSign ([]));
175
+ $ this ->assertFalse (BoundMethodAccessor::isCallableWithAtSign (null ));
176
+ }
156
177
}
0 commit comments