@@ -24,8 +24,16 @@ public function match($pathinfo)
2424 {
2525 $ allow = array ();
2626 $ pathinfo = rawurldecode ($ pathinfo );
27+ $ trimmedPathinfo = rtrim ($ pathinfo , '/ ' );
2728 $ context = $ this ->context ;
2829 $ request = $ this ->request ;
30+ $ requestMethod = $ canonicalMethod = $ context ->getMethod ();
31+ $ scheme = $ context ->getScheme ();
32+
33+ if ('HEAD ' === $ requestMethod ) {
34+ $ canonicalMethod = 'GET ' ;
35+ }
36+
2937
3038 // foo
3139 if (0 === strpos ($ pathinfo , '/foo ' ) && preg_match ('#^/foo/(?P<bar>baz|symfony)$#s ' , $ pathinfo , $ matches )) {
@@ -35,8 +43,8 @@ public function match($pathinfo)
3543 if (0 === strpos ($ pathinfo , '/bar ' )) {
3644 // bar
3745 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 ' ;
4048 goto not_bar;
4149 }
4250
@@ -46,8 +54,8 @@ public function match($pathinfo)
4654
4755 // barhead
4856 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 ' ;
5159 goto not_barhead;
5260 }
5361
@@ -60,17 +68,17 @@ public function match($pathinfo)
6068 if (0 === strpos ($ pathinfo , '/test ' )) {
6169 if (0 === strpos ($ pathinfo , '/test/baz ' )) {
6270 // baz
63- if ($ pathinfo === '/test/baz ' ) {
71+ if ('/test/baz ' === $ pathinfo ) {
6472 return array ('_route ' => 'baz ' );
6573 }
6674
6775 // baz2
68- if ($ pathinfo === '/test/baz.html ' ) {
76+ if ('/test/baz.html ' === $ pathinfo ) {
6977 return array ('_route ' => 'baz2 ' );
7078 }
7179
7280 // baz3
73- if ($ pathinfo === '/test/baz3/ ' ) {
81+ if ('/test/baz3/ ' === $ pathinfo ) {
7482 return array ('_route ' => 'baz3 ' );
7583 }
7684
@@ -83,7 +91,7 @@ public function match($pathinfo)
8391
8492 // baz5
8593 if (preg_match ('#^/test/(?P<foo>[^/]++)/$#s ' , $ pathinfo , $ matches )) {
86- if ($ this -> context -> getMethod () != ' POST ' ) {
94+ if (' POST ' !== $ canonicalMethod ) {
8795 $ allow [] = 'POST ' ;
8896 goto not_baz5;
8997 }
@@ -94,7 +102,7 @@ public function match($pathinfo)
94102
95103 // baz.baz6
96104 if (preg_match ('#^/test/(?P<foo>[^/]++)/$#s ' , $ pathinfo , $ matches )) {
97- if ($ this -> context -> getMethod () != ' PUT ' ) {
105+ if (' PUT ' !== $ canonicalMethod ) {
98106 $ allow [] = 'PUT ' ;
99107 goto not_bazbaz6;
100108 }
@@ -106,7 +114,7 @@ public function match($pathinfo)
106114 }
107115
108116 // foofoo
109- if ($ pathinfo === ' /foofoo ' ) {
117+ if (' /foofoo ' === $ pathinfo ) {
110118 return array ( 'def ' => 'test ' , '_route ' => 'foofoo ' ,);
111119 }
112120
@@ -116,7 +124,7 @@ public function match($pathinfo)
116124 }
117125
118126 // space
119- if ($ pathinfo === '/spa ce ' ) {
127+ if ('/spa ce ' === $ pathinfo ) {
120128 return array ('_route ' => 'space ' );
121129 }
122130
@@ -161,12 +169,12 @@ public function match($pathinfo)
161169 }
162170
163171 // overridden2
164- if ($ pathinfo === '/multi/new ' ) {
172+ if ('/multi/new ' === $ pathinfo ) {
165173 return array ('_route ' => 'overridden2 ' );
166174 }
167175
168176 // hey
169- if ($ pathinfo === '/multi/hey/ ' ) {
177+ if ('/multi/hey/ ' === $ pathinfo ) {
170178 return array ('_route ' => 'hey ' );
171179 }
172180
@@ -184,7 +192,7 @@ public function match($pathinfo)
184192
185193 if (0 === strpos ($ pathinfo , '/aba ' )) {
186194 // ababa
187- if ($ pathinfo === ' /ababa ' ) {
195+ if (' /ababa ' === $ pathinfo ) {
188196 return array ('_route ' => 'ababa ' );
189197 }
190198
@@ -195,59 +203,59 @@ public function match($pathinfo)
195203
196204 }
197205
198- $ host = $ this -> context ->getHost ();
206+ $ host = $ context ->getHost ();
199207
200208 if (preg_match ('#^a \\.example \\.com$#si ' , $ host , $ hostMatches )) {
201209 // route1
202- if ($ pathinfo === ' /route1 ' ) {
210+ if (' /route1 ' === $ pathinfo ) {
203211 return array ('_route ' => 'route1 ' );
204212 }
205213
206214 // route2
207- if ($ pathinfo === '/c2/route2 ' ) {
215+ if ('/c2/route2 ' === $ pathinfo ) {
208216 return array ('_route ' => 'route2 ' );
209217 }
210218
211219 }
212220
213221 if (preg_match ('#^b \\.example \\.com$#si ' , $ host , $ hostMatches )) {
214222 // route3
215- if ($ pathinfo === '/c2/route3 ' ) {
223+ if ('/c2/route3 ' === $ pathinfo ) {
216224 return array ('_route ' => 'route3 ' );
217225 }
218226
219227 }
220228
221229 if (preg_match ('#^a \\.example \\.com$#si ' , $ host , $ hostMatches )) {
222230 // route4
223- if ($ pathinfo === ' /route4 ' ) {
231+ if (' /route4 ' === $ pathinfo ) {
224232 return array ('_route ' => 'route4 ' );
225233 }
226234
227235 }
228236
229237 if (preg_match ('#^c \\.example \\.com$#si ' , $ host , $ hostMatches )) {
230238 // route5
231- if ($ pathinfo === ' /route5 ' ) {
239+ if (' /route5 ' === $ pathinfo ) {
232240 return array ('_route ' => 'route5 ' );
233241 }
234242
235243 }
236244
237245 // route6
238- if ($ pathinfo === ' /route6 ' ) {
246+ if (' /route6 ' === $ pathinfo ) {
239247 return array ('_route ' => 'route6 ' );
240248 }
241249
242250 if (preg_match ('#^(?P<var1>[^ \\.]++) \\.example \\.com$#si ' , $ host , $ hostMatches )) {
243251 if (0 === strpos ($ pathinfo , '/route1 ' )) {
244252 // route11
245- if ($ pathinfo === ' /route11 ' ) {
253+ if (' /route11 ' === $ pathinfo ) {
246254 return $ this ->mergeDefaults (array_replace ($ hostMatches , array ('_route ' => 'route11 ' )), array ());
247255 }
248256
249257 // route12
250- if ($ pathinfo === ' /route12 ' ) {
258+ if (' /route12 ' === $ pathinfo ) {
251259 return $ this ->mergeDefaults (array_replace ($ hostMatches , array ('_route ' => 'route12 ' )), array ( 'var1 ' => 'val ' ,));
252260 }
253261
@@ -280,15 +288,15 @@ public function match($pathinfo)
280288 }
281289
282290 // route17
283- if ($ pathinfo === ' /route17 ' ) {
291+ if (' /route17 ' === $ pathinfo ) {
284292 return array ('_route ' => 'route17 ' );
285293 }
286294
287295 }
288296
289297 if (0 === strpos ($ pathinfo , '/a ' )) {
290298 // a
291- if ($ pathinfo === '/a/a... ' ) {
299+ if ('/a/a... ' === $ pathinfo ) {
292300 return array ('_route ' => 'a ' );
293301 }
294302
0 commit comments