diff --git a/composer.json b/composer.json index 5d285cd..8514aee 100644 --- a/composer.json +++ b/composer.json @@ -28,8 +28,7 @@ ], "require": { "php": ">=7.1", - "ext-json": "*", - "php-di/php-di": "^6.0" + "ext-json": "*" }, "require-dev": { "phpunit/phpunit": "^6.0", diff --git a/src/Pecee/SimpleRouter/ClassLoader/ClassLoader.php b/src/Pecee/SimpleRouter/ClassLoader/ClassLoader.php index c928339..87d2e70 100644 --- a/src/Pecee/SimpleRouter/ClassLoader/ClassLoader.php +++ b/src/Pecee/SimpleRouter/ClassLoader/ClassLoader.php @@ -2,22 +2,10 @@ namespace Pecee\SimpleRouter\ClassLoader; -use DI\Container; use Pecee\SimpleRouter\Exceptions\NotFoundHttpException; class ClassLoader implements IClassLoader { - /** - * Dependency injection enabled - * @var bool - */ - protected $useDependencyInjection = false; - - /** - * @var Container|null - */ - protected $container; - /** * Load class * @@ -27,21 +15,10 @@ class ClassLoader implements IClassLoader */ public function loadClass(string $class) { - if (class_exists($class) === false) { + if (\class_exists($class) === false) { throw new NotFoundHttpException(sprintf('Class "%s" does not exist', $class), 404); } - if ($this->useDependencyInjection === true) { - $container = $this->getContainer(); - if ($container !== null) { - try { - return $container->get($class); - } catch (\Exception $e) { - throw new NotFoundHttpException($e->getMessage(), (int)$e->getCode(), $e->getPrevious()); - } - } - } - return new $class(); } @@ -55,64 +32,7 @@ class ClassLoader implements IClassLoader */ public function loadClosure(Callable $closure, array $parameters) { - if ($this->useDependencyInjection === true) { - $container = $this->getContainer(); - if ($container !== null) { - try { - return $container->call($closure, $parameters); - } catch (\Exception $e) { - throw new NotFoundHttpException($e->getMessage(), (int)$e->getCode(), $e->getPrevious()); - } - } - } - return \call_user_func_array($closure, $parameters); } - /** - * Get dependency injector container. - * - * @return Container|null - */ - public function getContainer(): ?Container - { - return $this->container; - } - - /** - * Set the dependency-injector container. - * - * @param Container $container - * @return ClassLoader - */ - public function setContainer(Container $container): self - { - $this->container = $container; - - return $this; - } - - /** - * Enable or disable dependency injection. - * - * @param bool $enabled - * @return static - */ - public function useDependencyInjection(bool $enabled): self - { - $this->useDependencyInjection = $enabled; - - return $this; - } - - /** - * Return true if dependency injection is enabled. - * - * @return bool - */ - public function isDependencyInjectionEnabled(): bool - { - return $this->useDependencyInjection; - } - } diff --git a/src/Pecee/SimpleRouter/Handlers/EventHandler.php b/src/Pecee/SimpleRouter/Handlers/EventHandler.php index 9ac42ec..70b37b3 100644 --- a/src/Pecee/SimpleRouter/Handlers/EventHandler.php +++ b/src/Pecee/SimpleRouter/Handlers/EventHandler.php @@ -143,7 +143,7 @@ class EventHandler implements IEventHandler * Get events. * * @param string|null $name Filter events by name. - * @param array ...$names Add multiple names... + * @param array|string ...$names Add multiple names... * @return array */ public function getEvents(?string $name, ...$names): array diff --git a/src/Pecee/SimpleRouter/Route/Route.php b/src/Pecee/SimpleRouter/Route/Route.php index 3e9370c..8dc45bf 100644 --- a/src/Pecee/SimpleRouter/Route/Route.php +++ b/src/Pecee/SimpleRouter/Route/Route.php @@ -77,7 +77,6 @@ abstract class Route implements IRoute $router->debug('Executing callback'); /* When the callback is a function */ - return $router->getClassLoader()->loadClosure($callback, $parameters); } @@ -250,7 +249,7 @@ abstract class Route implements IRoute /** * Set callback * - * @param string|array\Closure $callback + * @param string|array|\Closure $callback * @return static */ public function setCallback($callback): IRoute diff --git a/src/Pecee/SimpleRouter/Router.php b/src/Pecee/SimpleRouter/Router.php index 758204f..af37c50 100644 --- a/src/Pecee/SimpleRouter/Router.php +++ b/src/Pecee/SimpleRouter/Router.php @@ -306,7 +306,7 @@ class Router * * @return string|null * @throws NotFoundHttpException - * @throws TokenMismatchException + * @throws \Pecee\Http\Middleware\Exceptions\TokenMismatchException * @throws HttpException * @throws \Exception */ diff --git a/src/Pecee/SimpleRouter/SimpleRouter.php b/src/Pecee/SimpleRouter/SimpleRouter.php index 284078b..ffea26a 100644 --- a/src/Pecee/SimpleRouter/SimpleRouter.php +++ b/src/Pecee/SimpleRouter/SimpleRouter.php @@ -10,7 +10,6 @@ namespace Pecee\SimpleRouter; -use DI\Container; use Pecee\Exceptions\InvalidArgumentException; use Pecee\Http\Middleware\BaseCsrfVerifier; use Pecee\Http\Request; @@ -533,17 +532,12 @@ class SimpleRouter } /** - * Enable or disable dependency injection - * - * @param Container $container - * @return IClassLoader + * Set custom class-loader class used. + * @param IClassLoader $classLoader */ - public static function enableDependencyInjection(Container $container): IClassLoader + public static function setCustomClassLoader(IClassLoader $classLoader): void { - return static::router() - ->getClassLoader() - ->useDependencyInjection(true) - ->setContainer($container); + static::router()->setClassLoader($classLoader); } /** diff --git a/tests/Pecee/SimpleRouter/ClassLoaderTest.php b/tests/Pecee/SimpleRouter/ClassLoaderTest.php new file mode 100644 index 0000000..79f6095 --- /dev/null +++ b/tests/Pecee/SimpleRouter/ClassLoaderTest.php @@ -0,0 +1,30 @@ +assertEquals('method3', $classLoaderClass); + $this->assertTrue($result); + + TestRouter::router()->reset(); + } + +} \ No newline at end of file diff --git a/tests/Pecee/SimpleRouter/DependencyInjectionTest.php b/tests/Pecee/SimpleRouter/DependencyInjectionTest.php deleted file mode 100644 index 8863f19..0000000 --- a/tests/Pecee/SimpleRouter/DependencyInjectionTest.php +++ /dev/null @@ -1,53 +0,0 @@ -useAutowiring(true) - ->ignorePhpDocErrors(true) - ->build(); - - TestRouter::enableDependencyInjection($container); - - $className = null; - - TestRouter::get('/', function (DummyMiddleware $url) use (&$className) { - $className = \get_class($url); - }); - - TestRouter::debug('/'); - - $this->assertEquals(DummyMiddleware::class, $className); - } - - public function testDependencyInjectionProduction() - { - $cacheDir = dirname(__DIR__, 2) . '/tmp'; - - $builder = new \DI\ContainerBuilder(); - $builder - ->enableCompilation($cacheDir) - ->writeProxiesToFile(true, $cacheDir . '/proxies') - ->ignorePhpDocErrors(true) - ->useAutowiring(true); - - $container = $builder->build(); - - TestRouter::enableDependencyInjection($container); - - $className = null; - - TestRouter::get('/', function (DummyMiddleware $url) use (&$className) { - $className = \get_class($url); - }); - - TestRouter::debug('/'); - - $this->assertEquals(DummyMiddleware::class, $className); - } -} \ No newline at end of file diff --git a/tests/Pecee/SimpleRouter/Dummy/ClassLoader/CustomClassLoader.php b/tests/Pecee/SimpleRouter/Dummy/ClassLoader/CustomClassLoader.php new file mode 100644 index 0000000..17bff54 --- /dev/null +++ b/tests/Pecee/SimpleRouter/Dummy/ClassLoader/CustomClassLoader.php @@ -0,0 +1,14 @@ + true]); + } +} \ No newline at end of file diff --git a/tests/Pecee/SimpleRouter/Dummy/DummyController.php b/tests/Pecee/SimpleRouter/Dummy/DummyController.php index 4150118..3b25e5d 100644 --- a/tests/Pecee/SimpleRouter/Dummy/DummyController.php +++ b/tests/Pecee/SimpleRouter/Dummy/DummyController.php @@ -16,6 +16,11 @@ class DummyController public function method2() { + } + + public function method3() + { + return 'method3'; } public function param($params = null)