В вашем модуле легко иметь несколько пространств имен. Единственное, что вам нужно сделать, это предоставить конфигурацию 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',
);
Что-то остерегайтесь! Убедитесь, что имя пространства имен подмодулей не сталкивается с другими пространствами имен модулей.
Надеется, что это помогает :)
Стоян
Там есть способ использования несколько пространств имен в одном модуле, это очень просто. Взгляните [здесь] (http://stackoverflow.com/questions/15777140/multiple-namespaces-under-same-module-in-zf2/15779461#15779461), чтобы посмотреть, как вы можете это сделать. Чтобы сделать то, что вы готовы сделать, я думаю, вам придется много работать с модулем ModuleManager. –