Zend Framework - лучший метод маршрутизации для больших приложений - PullRequest
0 голосов
/ 02 февраля 2012

Я в начале сборки сравнительно большого сайта с использованием Zend Framework.Я имею в виду использование модулей и папок в каждой папке контроллера модулей для организации контроллеров приложений.

Мой вопрос на самом деле: каков наилучший способ создания, управления и поддержки маршрутов для приложений, где каждый запрос требуетопределенный маршрут?

Насколько мне известно, варианты:

  1. Включить все определения маршрутов в application.ini
  2. Включить все определения маршрутов в начальной загрузке.php _initRoutes метод
  3. Автозагрузка из bootstrap.php ресурса, который компилирует и добавляет маршруты из отдельно хранимого файла rout.xml

Это приложение будет включать основной «сайт», которыйрасширяется отдельными модулями, чтобы по существу доставлять многосайтовое приложение.

Это пример моей предложенной структуры приложения:

|Project
    |-Application
        |-api
        |-configs
        |-controllers
        |-models
        |-modules
            |-core
                |-controllers
                    |-Products
                        |-blueController.php
                        |-redController.php
                        |-greenController
                    |-Services
                        |-indoorController.php
                        |-outdoorController.php
                |-models
                |-views
                |-Bootstrap.php
            |-site1
            |-site2
            |-site3
        |-views
        |-Bootstrap.php
    |-Docs
    |-Library
    |-Public
    |-.zfproject.xml

1 Ответ

1 голос
/ 07 февраля 2012

В духе модульности я считаю, что для каждого модуля лучше взять на себя ответственность за собственную информацию о маршрутизации в файле начальной загрузки.

protected function _initRoutes()
{
    $routes = array(
        ....
    );
    $router = Zend_Controller_Front::getInstance()->getRouter();
    $router->addConfig(new Zend_Config($routes), 'mymodulename');
    return $router;
}
...