diff --git a/composer.json b/composer.json index 3208bfa..67b69bf 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { - "name": "pecee/simple-router", - "description": "Simple, fast PHP router that is easy to get integrated and in almost any project. Heavily inspired by the Laravel router.", + "name": "michaelthedev/simple-router", + "description": "Simple, fast PHP router that is easy to get integrated and in almost any project. Heavily inspired by the Laravel router. (Forked from skipperbent/simple-php-router)", "keywords": [ "router", "router", @@ -24,6 +24,10 @@ { "name": "Simon Sessingø", "email": "simon.sessingoe@gmail.com" + }, + { + "name": "Michael Arawole", + "email": "michael@logad.net" } ], "require": { @@ -45,7 +49,7 @@ }, "autoload": { "psr-4": { - "Pecee\\": "src/Pecee/" + "LogadApp\\": "src/Pecee/" } }, "config": { diff --git a/src/Pecee/SimpleRouter/Route/LoadableRoute.php b/src/Pecee/SimpleRouter/Route/LoadableRoute.php index 72d88f9..f21fa94 100644 --- a/src/Pecee/SimpleRouter/Route/LoadableRoute.php +++ b/src/Pecee/SimpleRouter/Route/LoadableRoute.php @@ -37,8 +37,19 @@ public function loadMiddleware(Request $request, Router $router): void $router->debug('Loading middlewares'); foreach ($this->getMiddlewares() as $middleware) { + $parameters = []; if (is_object($middleware) === false) { + if (str_contains($middleware, ',')) { + $options = explode(',', $middleware); + + //@todo: see efficiency of trim + $middleware = $options[0]; + + // set the rest of explode as parameters + $parameters = array_slice($options, 1); + } + $middleware = $router->getClassLoader()->loadClass($middleware); } @@ -49,7 +60,7 @@ public function loadMiddleware(Request $request, Router $router): void $className = get_class($middleware); $router->debug('Loading middleware "%s"', $className); - $middleware->handle($request); + $middleware->handle($request, ...$parameters); $router->debug('Finished loading middleware "%s"', $className); } diff --git a/tests/Pecee/SimpleRouter/Dummy/DummyMiddlewareWithParam.php b/tests/Pecee/SimpleRouter/Dummy/DummyMiddlewareWithParam.php new file mode 100644 index 0000000..4059f25 --- /dev/null +++ b/tests/Pecee/SimpleRouter/Dummy/DummyMiddlewareWithParam.php @@ -0,0 +1,14 @@ +assertTrue(true); } + public function testMiddlewareWithParameters() + { + $this->expectException(MiddlewareLoadedException::class); + + TestRouter::group(['exceptionHandler' => 'ExceptionHandler'], function () { + TestRouter::get('/my/test/url', 'DummyController@method1', ['middleware' => 'DummyMiddlewareWithParam,4,hello']); + }); + + TestRouter::debug('/my/test/url', 'get'); + + } } \ No newline at end of file