11<?php
2- /**
3- * Created by PhpStorm.
4- * User: Milad Rahimi <[email protected] > 5- * Date: 6/5/2018 AD
6- * Time: 12:23
7- */
82
93namespace MiladRahimi \PhpRouter ;
104
@@ -43,6 +37,21 @@ class Router
4337 */
4438 private $ parameters = [];
4539
40+ /**
41+ * @var ServerRequestInterface
42+ */
43+ private $ request ;
44+
45+ /**
46+ * @var ResponseInterface
47+ */
48+ private $ response ;
49+
50+ /**
51+ * @var PublisherInterface
52+ */
53+ private $ publisher ;
54+
4655 /**
4756 * @var string|null
4857 */
@@ -73,28 +82,16 @@ class Router
7382 */
7483 private $ currentRouteName = null ;
7584
76- /**
77- * @var ServerRequestInterface
78- */
79- private $ serverRequest ;
80-
81- /**
82- * @var ResponseInterface
83- */
84- private $ response ;
85-
86- /**
87- * @var PublisherInterface
88- */
89- private $ publisher ;
90-
9185 /**
9286 * Router constructor.
87+ *
88+ * @param PublisherInterface|null $publisher
9389 */
94- public function __construct ()
90+ public function __construct (PublisherInterface $ publisher = null )
9591 {
96- $ this ->initializeRequestAndResponse ();
97- $ this ->publisher = new Publisher ();
92+ $ this ->publisher = $ publisher ?: new Publisher ();
93+ $ this ->response = new Response ();
94+ $ this ->request = ServerRequestFactory::fromGlobals ();
9895 }
9996
10097 /**
@@ -103,15 +100,15 @@ public function __construct()
103100 * @param array $attributes
104101 * @param Closure $routes
105102 */
106- public function group ($ attributes = [] , Closure $ routes )
103+ public function group (array $ attributes , Closure $ routes )
107104 {
108105 // Backup previous group properties
106+ $ oldName = $ this ->currentName ;
109107 $ oldMiddleware = $ this ->currentMiddleware ;
110108 $ oldPrefix = $ this ->currentPrefix ;
111109 $ oldDomain = $ this ->currentDomain ;
112- $ oldName = $ this ->currentName ;
113110
114- // There shouldn't be any name!
111+ // Empty current name for next steps
115112 $ this ->currentName = null ;
116113
117114 // Set given middleware for the group
@@ -195,10 +192,10 @@ public function map(
195192 */
196193 public function dispatch ()
197194 {
198- $ method = $ this ->serverRequest ->getMethod ();
199- $ scheme = $ this ->serverRequest ->getUri ()->getScheme ();
200- $ domain = substr ($ this ->serverRequest ->getUri ()->getHost (), strlen ($ scheme . ':// ' ));
201- $ uri = $ this ->serverRequest ->getUri ()->getPath ();
195+ $ method = $ this ->request ->getMethod ();
196+ $ scheme = $ this ->request ->getUri ()->getScheme ();
197+ $ domain = substr ($ this ->request ->getUri ()->getHost (), strlen ($ scheme . ':// ' ));
198+ $ uri = $ this ->request ->getUri ()->getPath ();
202199
203200 $ routes = array_merge ($ this ->routes [$ method ] ?? [], $ this ->routes ['* ' ] ?? []);
204201
@@ -250,27 +247,6 @@ private function run(array $routeAttributes, array $routeParameters)
250247 }
251248 }
252249
253- /**
254- * Initialize http request and response
255- */
256- private function initializeRequestAndResponse ()
257- {
258- $ this ->response = new Response ();
259- $ this ->serverRequest = ServerRequestFactory::fromGlobals ();
260-
261- foreach (array_merge ($ _GET ?? [], $ _POST ?? []) as $ name => $ value ) {
262- $ this ->serverRequest = $ this ->serverRequest ->withAttribute ($ name , $ value );
263- }
264-
265- if (is_array ($ bodyParameters = json_decode (file_get_contents ('php://input ' ), true ))) {
266- $ this ->serverRequest = $ this ->serverRequest ->withParsedBody ($ bodyParameters );
267-
268- foreach ($ bodyParameters as $ name => $ value ) {
269- $ this ->serverRequest = $ this ->serverRequest ->withAttribute ($ name , $ value );
270- }
271- }
272- }
273-
274250 /**
275251 * Run the controller through the middleware
276252 *
@@ -298,7 +274,7 @@ private function runControllerThroughMiddleware(array $middleware, Closure $cont
298274 $ middleware [$ i ] = new $ middleware [$ i ];
299275 }
300276
301- return $ middleware [$ i ]->handle ($ this ->serverRequest , $ next );
277+ return $ middleware [$ i ]->handle ($ this ->request , $ next );
302278 }
303279
304280 /**
@@ -387,7 +363,7 @@ function (ReflectionParameter $parameter) use ($parameters) {
387363 ($ parameter ->getType () && $ parameter ->getType ()->getName () == ServerRequestInterface::class) ||
388364 $ parameter ->getName () == 'request '
389365 ) {
390- return $ this ->serverRequest ;
366+ return $ this ->request ;
391367 }
392368
393369 if (
@@ -675,19 +651,19 @@ public function publish($httpResponse)
675651 *
676652 * @return ServerRequestInterface
677653 */
678- public function getServerRequest (): ServerRequestInterface
654+ public function getRequest (): ServerRequestInterface
679655 {
680- return $ this ->serverRequest ;
656+ return $ this ->request ;
681657 }
682658
683659 /**
684660 * Set my own http request instance
685661 *
686- * @param ServerRequestInterface $serverRequest
662+ * @param ServerRequestInterface $request
687663 */
688- public function setServerRequest (ServerRequestInterface $ serverRequest )
664+ public function setRequest (ServerRequestInterface $ request )
689665 {
690- $ this ->serverRequest = $ serverRequest ;
666+ $ this ->request = $ request ;
691667 }
692668
693669 /**
0 commit comments