<?php
// /data/www/www.domain.com/www/module/Album/Module.php
namespace Album; use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use Zend\ModuleManager\Feature\InitProviderInterface;
use Zend\ModuleManager\Feature\BootstrapListenerInterface;
use Zend\ModuleManager\Feature\LocatorRegisteredInterface;
use Zend\ModuleManager\Feature\DependencyIndicatorInterface;
use Zend\ModuleManager\ModuleManagerInterface;
use Zend\EventManager\EventInterface; use Album\Model\Album;
use Album\Model\AlbumTable;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway; /* AutoloaderProviderInterface : loadModule---0 : invoke <getAutoloaderConfig> method */
/* DependencyIndicatorInterface : loadModule---1 : invoke <getModuleDependencies> method */
/* InitProviderInterface : loadModule---2 : invoke <init> method */
/* BootstrapListenerInterface : loadModule---3 : bind <onBootstrap> method into SharedEventManager */
// LocatorRegisteredInterface /* loadModule---4 : inject into LocatorRegisteredInterface */
/* ConfigProviderInterface : loadModule---5 : invoke <getConfig> method */
class Module implements AutoloaderProviderInterface,
DependencyIndicatorInterface,
InitProviderInterface,
BootstrapListenerInterface,
ConfigProviderInterface
{ /**
* loadModule---0
* Zend\ModuleManager\Listener\AutoloaderListener::__invoke(ModuleEvent $e) 调用本方法
* 在触发"loadModule"事件时调用
*/
public function getAutoloaderConfig()
{
// return array(); //使用 Composer 加载
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php'
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__
)
)
);
} /**
* loadModule---1
* Zend\ModuleManager\Listener\ModuleDependencyCheckerListener::__invoke(ModuleEvent $e) 调用本方法
* 在触发"loadModule"事件时调用
*/
public function getModuleDependencies(){
return array();
} /**
* loadModule---2
* Zend\ModuleManager\Listener\InitTrigger::__invoke(ModuleEvent $e) 调用本方法
* 在触发"loadModule"事件时调用
*/
public function init(ModuleManagerInterface $modulemanager){
// 无需返回参数
// $modulemanager instanceof Zend\ModuleManager\ModuleManager
$moduleEvent = $modulemanager->getEvent(); // 获取当前模块
$module = $moduleEvent->getModule(); // $module == $this // 获取服务管理器
$serviceManager = $moduleEvent->getParam('ServiceManager',null);
$applicationConfig = $serviceManager->get('ApplicationConfig'); // 获取配置监听器
$configListener = $moduleEvent->getParam('configListener',null);
$configListener = $moduleEvent->getConfigListener(); // 获取事件管理器
$eventManager = $modulemanager->getEventManager();
$sharedEvents = $eventManager->getSharedManager(); // 获取模块管理器中模块列表
$modulemanager->getModules() == array(
'Application',
'Album'
);
} /**
* loadModule---3
* Zend\ModuleManager\Listener\OnBootstrapListener::__invoke(ModuleEvent $e) 注册本方法到共享事件管理器,事件为“bootstrap”
* 在触发"bootstrap"事件时调用
*
*/
public function onBootstrap(EventInterface $e){
} /**
* loadModule---5
* Zend\ModuleManager\Listener\ConfigListener::onLoadModule(ModuleEvent $e) 调用本方法
* 在触发"loadModule"事件时调用
* $this->configs['album'] = getConfig();
*/
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
} /**
* loadModule---6
* Zend\ModuleManager\Listener\ServiceListener::onLoadModule(ModuleEvent $e) 调用本方法
*
* if($module instanceof $sm['module_class_interface']){
* $config = $module->{$sm['module_class_method']}();
* $this->serviceManagers[$key]['configuration'][$fullname] = $config;
* }
*
* -----------
* $serviceListener->addServiceManager($serviceLocator,
* 'service_manager',
* 'Zend\ModuleManager\Feature\ServiceProviderInterface',
* 'getServiceConfig'
* ) 添加的服务,决定了本方法会被调用
*/
public function getServiceConfig()
{
return array(
'factories' => array(
'Album\Model\AlbumTable' => function ($sm)
{
$tableGateway = $sm->get('AlbumTableGateway');
$table = new AlbumTable($tableGateway);
return $table;
},
'AlbumTableGateway' => function ($sm)
{
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Album());
return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
}
)
);
}
}

最新文章

  1. iOS瀑布流实现(Swift)
  2. 深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域
  3. js判断鼠标是否停止移动
  4. iOS 中捕获程序崩溃日志
  5. jedis:exception is java.lang.VerifyError: Bad type on operand stack
  6. 【Android学习】自定义Android样式checkbox
  7. 用js实现选项卡切换效果
  8. NYOJ128前缀式计算
  9. 在Linux系统如何让程序开机时自动启动
  10. Contest - 多校训练(985专场) Problem C: 985的方格难题
  11. C++中定义使用受限的类
  12. 通过js中的useragrent来判断设备是pc端还是移动端,跳转不同的地址
  13. [php]在PHP中读取和写入WORD文档的代码
  14. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(4)- Flashloader初体验(blhost)
  15. js中类定义函数时用prototype与不用的区别
  16. Python学习&mdash;Pycharm连接mysql服务器
  17. tensorflow的一些基础用法
  18. 23-[模块]-logging
  19. ubuntu下完全卸载opencv3.1.0
  20. zoj2314

热门文章

  1. Shell编程中的条件判断(条件测试)
  2. 从左到右的滑块-Au3
  3. SpringBoot | 第九章:Mybatis-plus的集成和使用
  4. android中AudioRecord使用
  5. 【踩坑】遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 报错
  6. idea(2017.3)的安装及快捷键的配置
  7. 观察者模式(Observe Pattern)
  8. android-上下文菜单的创建 - 随心
  9. Bugzilla-5.0.3 (OpenLogic CentOS 7.2)
  10. Openfire+spark在linux上搭建内部聊天系统