diff --git a/src/Foundation/Application.php b/src/Foundation/Application.php index c4152df..23d4914 100644 --- a/src/Foundation/Application.php +++ b/src/Foundation/Application.php @@ -19,6 +19,7 @@ use Facebook\HackRouter\BaseRouter; use Nazg\Http\HttpMethod; +use Nazg\Heredity\Heredity; use Nazg\Heredity\{MiddlewareStack, PsrContainerResolver}; use Nazg\Response\Emitter; use Nazg\RequestHandler\FallbackHandler; @@ -39,6 +40,8 @@ class Application { protected ?BootstrapRegister $bootstrapRegister; + protected $flag = false; + public function __construct(protected DependencyInterface $dependency) {} public function run(ServerRequestInterface $serverRequest): void { @@ -143,6 +146,10 @@ private function registerMiddlewares(mixed $config): void { } } + public function setValidateAttribute(bool $flag) { + $this->flag = $flag; + } + protected function middlewareProcessor( ImmVector<\Nazg\Types\TMiddlewareClass> $middleware, ContainerInterface $container, @@ -151,15 +158,16 @@ protected function middlewareProcessor( $this->im ->concat($this->middleware()) ->concat($middleware)->toArray(); - $dispatcher = new Dispatcher( - new MiddlewareStack( - $appMiddleware, - new PsrContainerResolver($container), - ), - $this->requestHandler ?: new FallbackHandler(), + $stack = new MiddlewareStack( + $appMiddleware, + new PsrContainerResolver($container), ); - $dispatcher->setContainer($container); - return $dispatcher; + if ($this->flag) { + $dispatcher = new Dispatcher($stack, $this->requestHandler ?: new FallbackHandler()); + $dispatcher->setContainer($container); + return $dispatcher; + } + return new Heredity($stack, $this->requestHandler ?: new FallbackHandler()); } protected function send(ResponseInterface $response): void { diff --git a/tests/ApplicationTest.php b/tests/ApplicationTest.php index b5a7484..fbaf042 100644 --- a/tests/ApplicationTest.php +++ b/tests/ApplicationTest.php @@ -34,6 +34,7 @@ public function testShouldBeValidationFaild():void { ]); $app = new Application(new \Nazg\Foundation\Dependency\Dependency()); $app->setApplicationConfig($aggregator->getMergedConfig()); + $app->setValidateAttribute(true); $app->run( ServerRequestFactory::fromGlobals([ 'REQUEST_URI' => '/validate/12',