public function testRouting() { $application = Application::create(); $application->addRoute(new HelloRoute()); $request = new Request(); $this->assertResponse($application->handle($request))->hasStatusCode(404); $request->setPath('/a'); $this->assertResponse($application->handle($request))->hasStatusCode(200)->hasBody('Hello'); $request->setPath('/b'); $this->assertResponse($application->handle($request))->hasStatusCode(200)->hasBody('World'); $request->setPath('/c'); $this->assertResponse($application->handle($request))->hasStatusCode(404); }
use Brick\App\Application; use Brick\Http\Request; use Brick\Http\Response; use Brick\App\Routing\Route; use Brick\App\Routing\RouteMatch; use Brick\App\Event\NonResponseResultEvent; class MyRoute implements Route { public function match(Request $request) { return RouteMatch::forFunction(function () { return ["test" => "hop"]; }); } } class JsonPlugin implements \Brick\App\Plugin { public function register(\Brick\Event\EventDispatcher $dispatcher) { $dispatcher->addListener(NonResponseResultEvent::class, function (NonResponseResultEvent $event) { $response = new Response(); $response->setContent(json_encode($event->getControllerResult())); $response->setHeader('Content-Type', 'application/json'); $event->setResponse($response); }); } } $application = Application::create(); $application->addRoute(new MyRoute()); $application->addPlugin(new JsonPlugin()); $application->run();