public function run() { // 添加router的配置处理 if ($routerRules = $this->get('routers')) { Router::set($routerRules); } Router::run(); }
/** * @covers FrontController::__construct * @covers FrontController::dispatch */ public function testDispatchingWorksCorrectly() { $request = new Request(array('REQUEST_URI' => '/test')); $response = new Response(); $router = new Router(); $router->set('test', 'TestController'); $frontController = new FrontController($request, $response, $router, new ControllerFactory(new MapperFactory(new PDO('sqlite::memory:'))), new ViewFactory()); $this->assertInstanceOf('TestView', $frontController->dispatch($router)); }
public function testMethods() { $router = new Router(); $this->assertFalse($router->has("home")); $this->assertNull($router->get("home")); $this->assertSame(0, $router->count()); // add one $this->assertInstanceOf("SugiPHP\\Routing\\Router", $router->add("home", new Route("/"))); $this->assertSame(1, $router->count()); $this->assertTrue($router->has("home")); $this->assertInstanceOf("SugiPHP\\Routing\\Route", $router->get("home")); // change it $this->assertInstanceOf("SugiPHP\\Routing\\Router", $router->set("home", new Route("/foo"))); $this->assertSame(1, $router->count()); $this->assertTrue($router->has("home")); $this->assertInstanceOf("SugiPHP\\Routing\\Route", $router->get("home")); // remove it $this->assertInstanceOf("SugiPHP\\Routing\\Router", $router->delete("home")); $this->assertFalse($router->has("home")); $this->assertNull($router->get("home")); $this->assertSame(0, $router->count()); }
<?php require __DIR__ . '/../src/autoload.php'; // Set some super-global variables for demo purposes. if (PHP_SAPI == 'cli') { $_SERVER['REQUEST_URI'] = '/bankaccount/id/1'; } $request = new Request($_SERVER, $_GET, $_POST, $_COOKIE, $_FILES, $_ENV); $response = new Response(); $mapperFactory = new MapperFactory(new PDO('sqlite:' . dirname(__DIR__) . '/database/bankaccount.db')); $router = new Router(); $router->set('bankaccount', 'BankAccountController'); $router->set('bankaccounts', 'BankAccountListController'); $controllerFactory = new ControllerFactory($mapperFactory); $viewFactory = new ViewFactory(); $frontController = new FrontController($request, $response, $router, $controllerFactory, $viewFactory); $view = $frontController->dispatch($router); print $view->render();
<?php /** * 配置路由 * * @package Imp * @author Imp <*****@*****.**> * @copyright 2015-2016 Imp All rights reserved. * @version 1.0 * @link */ Router::set('user/{id}', function ($id) { echo 'router'; }); Router::set('admin/user/login', 'Admin/UserController@login'); Router::set('user/login', 'UserController@login'); Router::set('post/{id}/edit', 'PostController@edit', array('id' => '')); Router::set('keji/{$id}', 'CategoryController@index', array('id'));