public function testParse() { $param = new Param('/Articles'); $request = new RequestAggregate([$param]); $this->assertEquals(true, Router::has($request->getParam('url'))); $this->assertEquals('Articles', Router::parse($request)->data('controller')); $this->assertEquals('index', Router::parse($request)->data('action')); $this->assertEquals([], Router::parse($request)->data('arguments')); }
public function testCreateController() { $request = new RequestAggregate(); $request->setRequest(new Param('/Users/index/1')); $dispatcher = new Dispatcher($request); $controller1 = $dispatcher->getController($request); $this->assertInstanceOf('App\\Controller\\UsersController', $controller1); $request->setRequest(new Param('')); Router::add('/', ['controller' => 'Pages', 'action' => 'index', 'arguments' => [1]]); $param = Router::parse($request); $request->setRequest($param); $controller2 = $dispatcher->getController($request); $this->assertInstanceOf('App\\Controller\\PagesController', $controller2); }
/** * リクエストデータから適切なコントローラを生成し、適切なメソッドを実行する. * * @param \TRW\Request\RequestAggreagete * @return mixid 結果を出力する */ public function dispatch($request) { if (empty($request->getParam('controller'))) { $defaultParam = Router::parse($request); $request->setRequest($defaultParam); } if (Router::has($request->getParam('url'))) { $mapedParam = Router::parse($request); $request->setRequest($mapedParam); } $controllerInstance = $this->getController($request); $this->invoke($controllerInstance, $request); echo $this->render($controllerInstance, $request); }