@@ -24,8 +24,16 @@ public function match($pathinfo)
24
24
{
25
25
$ allow = array ();
26
26
$ pathinfo = rawurldecode ($ pathinfo );
27
+ $ trimmedPathinfo = rtrim ($ pathinfo , '/ ' );
27
28
$ context = $ this ->context ;
28
29
$ request = $ this ->request ;
30
+ $ requestMethod = $ canonicalMethod = $ context ->getMethod ();
31
+ $ scheme = $ context ->getScheme ();
32
+
33
+ if ('HEAD ' === $ requestMethod ) {
34
+ $ canonicalMethod = 'GET ' ;
35
+ }
36
+
29
37
30
38
// foo
31
39
if (0 === strpos ($ pathinfo , '/foo ' ) && preg_match ('#^/foo/(?P<bar>baz|symfony)$#s ' , $ pathinfo , $ matches )) {
@@ -35,8 +43,8 @@ public function match($pathinfo)
35
43
if (0 === strpos ($ pathinfo , '/bar ' )) {
36
44
// bar
37
45
if (preg_match ('#^/bar/(?P<foo>[^/]++)$#s ' , $ pathinfo , $ matches )) {
38
- if (! in_array ( $ this -> context -> getMethod (), array ( 'GET ' , ' HEAD ' )) ) {
39
- $ allow = array_merge ( $ allow , array ( 'GET ' , ' HEAD ' )) ;
46
+ if ('GET ' !== $ canonicalMethod ) {
47
+ $ allow[] = 'GET ' ;
40
48
goto not_bar;
41
49
}
42
50
@@ -46,8 +54,8 @@ public function match($pathinfo)
46
54
47
55
// barhead
48
56
if (0 === strpos ($ pathinfo , '/barhead ' ) && preg_match ('#^/barhead/(?P<foo>[^/]++)$#s ' , $ pathinfo , $ matches )) {
49
- if (! in_array ( $ this -> context -> getMethod (), array ( 'GET ' , ' HEAD ' )) ) {
50
- $ allow = array_merge ( $ allow , array ( 'GET ' , ' HEAD ' )) ;
57
+ if ('GET ' !== $ canonicalMethod ) {
58
+ $ allow[] = 'GET ' ;
51
59
goto not_barhead;
52
60
}
53
61
@@ -60,17 +68,17 @@ public function match($pathinfo)
60
68
if (0 === strpos ($ pathinfo , '/test ' )) {
61
69
if (0 === strpos ($ pathinfo , '/test/baz ' )) {
62
70
// baz
63
- if ($ pathinfo === '/test/baz ' ) {
71
+ if ('/test/baz ' === $ pathinfo ) {
64
72
return array ('_route ' => 'baz ' );
65
73
}
66
74
67
75
// baz2
68
- if ($ pathinfo === '/test/baz.html ' ) {
76
+ if ('/test/baz.html ' === $ pathinfo ) {
69
77
return array ('_route ' => 'baz2 ' );
70
78
}
71
79
72
80
// baz3
73
- if ($ pathinfo === '/test/baz3/ ' ) {
81
+ if ('/test/baz3/ ' === $ pathinfo ) {
74
82
return array ('_route ' => 'baz3 ' );
75
83
}
76
84
@@ -83,7 +91,7 @@ public function match($pathinfo)
83
91
84
92
// baz5
85
93
if (preg_match ('#^/test/(?P<foo>[^/]++)/$#s ' , $ pathinfo , $ matches )) {
86
- if ($ this -> context -> getMethod () != ' POST ' ) {
94
+ if (' POST ' !== $ canonicalMethod ) {
87
95
$ allow [] = 'POST ' ;
88
96
goto not_baz5;
89
97
}
@@ -94,7 +102,7 @@ public function match($pathinfo)
94
102
95
103
// baz.baz6
96
104
if (preg_match ('#^/test/(?P<foo>[^/]++)/$#s ' , $ pathinfo , $ matches )) {
97
- if ($ this -> context -> getMethod () != ' PUT ' ) {
105
+ if (' PUT ' !== $ canonicalMethod ) {
98
106
$ allow [] = 'PUT ' ;
99
107
goto not_bazbaz6;
100
108
}
@@ -106,7 +114,7 @@ public function match($pathinfo)
106
114
}
107
115
108
116
// foofoo
109
- if ($ pathinfo === ' /foofoo ' ) {
117
+ if (<
10000
span class="pl-s">' /foofoo ' === $ pathinfo ) {
110
118
return array ( 'def ' => 'test ' , '_route ' => 'foofoo ' ,);
111
119
}
112
120
@@ -116,7 +124,7 @@ public function match($pathinfo)
116
124
}
117
125
118
126
// space
119
- if ($ pathinfo === '/spa ce ' ) {
127
+ if ('/spa ce ' === $ pathinfo ) {
120
128
return array ('_route ' => 'space ' );
121
129
}
122
130
@@ -161,12 +169,12 @@ public function match($pathinfo)
161
169
}
162
170
163
171
// overridden2
164
- if ($ pathinfo === '/multi/new ' ) {
172
+ if ('/multi/new ' === $ pathinfo ) {
165
173
return array ('_route ' => 'overridden2 ' );
166
174
}
167
175
168
176
// hey
169
- if ($ pathinfo === '/multi/hey/ ' ) {
177
+ if ('/multi/hey/ ' === $ pathinfo ) {
170
178
return array ('_route ' => 'hey ' );
171
179
}
172
180
@@ -184,7 +192,7 @@ public function match($pathinfo)
184
192
185
193
if (0 === strpos ($ pathinfo , '/aba ' )) {
186
194
// ababa
187
- if ($ pathinfo === ' /ababa ' ) {
195
+ if (' /ababa ' === $ pathinfo ) {
188
196
return array ('_route ' => 'ababa ' );
189
197
}
190
198
@@ -195,59 +203,59 @@ public function match($pathinfo)
195
203
196
204
}
197
205
198
- $ host = $ this -> context ->getHost ();
206
+ $ host = $ context ->getHost ();
199
207
200
208
if (preg_match ('#^a \\.example \\.com$#si ' , $ host , $ hostMatches )) {
201
209
// route1
202
- if ($ pathinfo === ' /route1 ' ) {
210
+ if (' /route1 ' === $ pathinfo ) {
203
211
return array ('_route ' => 'route1 ' );
204
212
}
205
213
206
214
// route2
207
- if ($ pathinfo === '/c2/route2 ' ) {
215
+ if ('/c2/route2 ' === $ pathinfo ) {
208
216
return array ('_route ' => 'route2 ' );
209
217
}
210
218
211
219
}
212
220
213
221
if (preg_match ('#^b \\.example \\.com$#si ' , $ host , $ hostMatches )) {
214
222
// route3
215
- if ($ pathinfo === '/c2/route3 ' ) {
223
+ if ('/c2/route3 ' === $ pathinfo ) {
216
224
return array ('_route ' => 'route3 ' );
217
225
}
218
226
219
227
}
220
228
221
229
if (preg_match ('#^a \\.example \\.com$#si ' , $ host , $ hostMatches )) {
222
230
// route4
223
- if ($ pathinfo === ' /route4 ' ) {
231
+ if (' /route4 ' === $ pathinfo ) {
224
232
return array ('_route ' => 'route4 ' );
225
233
}
226
234
227
235
}
228
236
229
237
if (preg_match ('#^c \\.example \\.com$#si ' , $ host , $ hostMatches )) {
230
238
// route5
231
- if ($ pathinfo === ' /route5 ' ) {
239
+ if (' /route5 ' === $ pathinfo ) {
232
240
return array ('_route ' => 'route5 ' );
233
241
}
234
242
235
243
}
236
244
237
245
// route6
238
- if ($ pathinfo === ' /route6 ' ) {
246
+ if (' /route6 ' === $ pathinfo ) {
239
247
return array ('_route ' => 'route6 ' );
240
248
}
241
249
242
250
if (preg_match ('#^(?P<var1>[^ \\.]++) \\.example \\.com$#si ' , $ host , $ hostMatches )) {
243
251
if (0 === strpos ($ pathinfo , '/route1 ' )) {
244
252
// route11
245
- if ($ pathinfo === ' /route11 ' ) {
253
+ if (' /route11 ' === $ pathinfo ) {
246
254
return $ this ->mergeDefaults (array_replace ($ hostMatches , array ('_route ' => 'route11 ' )), array ());
247
255
}
248
256
249
257
// route12
250
- if ($ pathinfo === ' /route12 ' ) {
258
+ if (' /route12 ' === $ pathinfo ) {
251
259
return $ this ->mergeDefaults (array_replace ($ hostMatches , array ('_route ' => 'route12 ' )), array ( 'var1 ' => 'val ' ,));
252
260
}
253
261
@@ -280,15 +288,15 @@ public function match($pathinfo)
280
288
}
281
289
282
290
// route17
283
- if ($ pathinfo === ' /route17 ' ) {
291
+ if (' /route17 ' === $ pathinfo ) {
284
292
return array ('_route ' => 'route17 ' );
285
293
}
286
294
287
295
}
288
296
289
297
if (0 === strpos ($ pathinfo , '/a ' )) {
290
298
// a
291
- if ($ pathinfo === '/a/a... ' ) {
299
+ if ('/a/a... ' === $ pathinfo ) {
292
300
return array ('_route ' => 'a ' );
293
301
}
294
302