我正在构建一个包含许多模块的Zend应用程序。我想在其他未使用Zend Framework的项目中重用其中一些模块。
我在非Zend测试脚本中使用了init_autoloader.php,可以按预期访问Zend Framework类。
我也可以设置自动加载器直接从我的模块加载类。
我的目标是加载模块并从getServiceConfig()函数的Module类访问其服务。
使用ModuleManager,我已经设置了DefaultListeners并可以加载模块。
use Zend\ModuleManager\Listener;
use Zend\ModuleManager\ModuleManager;
chdir(dirname(__DIR__));
// Instantiate and configure the default listener aggregate
$listenerOptions = new Listener\ListenerOptions(array(
'module_paths' => array(
'./module',
'./vendor'
)
));
$defaultListeners = new Listener\DefaultListenerAggregate($listenerOptions);
// Instantiate the module manager
$moduleManager = new ModuleManager(array(
'Group',
));
// Attach the default listener aggregate and load the modules
$moduleManager->getEventManager()->attachAggregate($defaultListeners);
$moduleManager->loadModules();
我想要做的是实例化一个ServiceManager实例,并且能够在应用程序中从模块中获取服务。
非常感谢任何帮助。
感谢。
答案 0 :(得分:0)
您可以像这样创建服务管理器:
use Zend\Mvc\Service\ServiceManagerConfig;
use Zend\ServiceManager\ServiceManager;
/* Insert your code to setup whatever autoloader you want */
$configuration = include 'config/application.config.php';
$serviceManager = new ServiceManager(new ServiceManagerConfig());
$serviceManager->setService('ApplicationConfig', $configuration);
$serviceManager->get('ModuleManager')->loadModules();
如果您只想使用特定模块,请创建仅包含所需模块的config/application.config.php
副本。注意,您可以直接将配置数组放入上面代码中的$configuration
,而不是根据需要包含文件。