2014-07-17 17 views
1

我有這樣的路由器列表:如何將路由器列表分爲模塊?

$router[] = $adminRouter = new RouteList('Admin'); 
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Dashboard:default'); 

$router[] = $frontRouter = new RouteList('Front'); 
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default'); 

但它會更好,這兩個路由器列表分成模塊的文件夾。在未來,我可能會創建更多模塊與不同的路由器列表。我該如何分開它,以及如何才能註冊?

回答

3

使用RouteFactory

在config.neon

services: 
    routeFactory.Front: FrontModule\RouteFactory 
    routeFactory.Admin: AdminModule\RouteFactory 
    route: 
    class: \RouteFactory 
    setup: 
     - addRouteFactory(@routeFactory.Front) 
     - addRouteFactory(@routeFactory.Admin) 

類RouteFactory:

class RouteFactory 
{ 
    /** @var array */ 
    private $routerFactories = array(); 


    public function addRouteFactory(IRouteFactory $routeFactory) 
    { 
    $this->routeFactories[] = $routeFactory; 
    } 

    public function createRouter() 
    { 
    $router = new RouteList(); 
    foreach ($this->routeFactories as $routeFactory) { 
     $router[] = $routeFactory->createRouter(); 
    } 

    return $router; 
    } 
} 

接口IRouteFactory:

interface IRouteFactory 
{ 
    public function createRouter(); 
} 

MODUL e路線工廠

namespace FrontModule; 

class RouteFactory implements \IRouteFactory 
{ 
    public function createRouter() 
    { 
    $router = new RouteList('Front'); 
    // your routes 

    return $router; 
    } 
}