2013-04-07 2 views
1

Можем ли мы иметь несколько модулей внутри другого модуля?Вложенные модули на Zend Framework 2

Может быть подобная структура, как это:

/module 
    /Application 
     /module 
      /SubApplication1 
      /SubApplication2 

Ищу для простого примера или статью кто-то знает об этом. У меня есть ссылка для google для ссылки, но, похоже, эта часть zf2 пока не изучается.

+0

Там есть способ использования несколько пространств имен в одном модуле, это очень просто. Взгляните [здесь] (http://stackoverflow.com/questions/15777140/multiple-namespaces-under-same-module-in-zf2/15779461#15779461), чтобы посмотреть, как вы можете это сделать. Чтобы сделать то, что вы готовы сделать, я думаю, вам придется много работать с модулем ModuleManager. –

ответ

1

В вашем модуле легко иметь несколько пространств имен. Единственное, что вам нужно сделать, это предоставить конфигурацию Zend Autoloader (s). Для Zend\Loader\StandardAutoloader конфиг может быть установлен в модуле и будет выглядеть примерно так:

public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\ClassMapAutoloader' => array(
      __DIR__ . '/autoload_classmap.php', 
     ), 
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       // This is the default namespace most probably the module dir name 
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
       // And this is for your custom namespace within the module 
       'SomeNamespace' => __DIR__ . '/src/' . 'SomeNamespace', 
       'OtherNamespace' => __DIR__ . '/src/' . 'OtherNamespace', 
      ), 
     ), 
    ); 
} 

Для Zend\Loader\ClassMapAutoloader это то же самое понятие. Вам просто нужно сопоставить пространства имен с файлами классов:

// file: ~/autoload_classmap.php 
return array(
    'SomeNamespace\Controller\SomeController' => __DIR__ . '/src/SomeNamespace/Controller/SomeController.php', 
    'OtherNamespace\Controller\OtherController' => __DIR__ . '/src/OtherNamespace/Controller/OtherController.php', 
); 

Что-то остерегайтесь! Убедитесь, что имя пространства имен подмодулей не сталкивается с другими пространствами имен модулей.

Надеется, что это помогает :)

Стоян

Смежные вопросы