我想写一个ZendFramework2供应商模块,托管在github上,可通过composer进行安装,并提供给全世界!
现在,虽然我在编写模块方面没有问题,但我正在挣扎的地方是围绕这一点的机制。
我的本能反应是这样做:
现在逻辑告诉我,这不是正确的方法。所以我在想,也许我把模块写成骨架应用程序之外的独立模块,推到gito,然后从gito拉到一个工作的应用程序.
如果你能指导我到一个教程,请让我知道,如果你可以确认或否认我的想法,这将是伟大的。
发布于 2015-04-13 19:28:32
您可能需要在您的模块周围一些应用程序来检查它是否工作,但这不应影响您创建该模块的方式。
当涉及到ZendFramework2集成模块时,您真正需要的是一个名为SomeNameSpace\Module的类,它必须可以通过Composer自动加载。请注意,不需要将该文件放置在某个位置。ZF2将检测到您正在与Composer一起使用它,只需使用class_exists(),而不是试图定位一个文件,包含它,然后检查这个类。
这个类应该以ZF2期望模块所做的方式显示有关模块的一些配置信息,例如添加引导事件侦听器、通过getConfig()返回配置数据等等。它不需要为getAutoloaderConfig()返回任何内容,因为这就是Composer的目的。
要将模块添加到ZF2应用程序中,可以将SomeNameSpace名称添加到文件config/application.config.php中
 return array(
     'modules' => array(
         'OtherStuffForTheDemoApp',
         'SomeNameSpace' # this enables your module in your demo app 
                         # and anywhere else where it's being used
     ),ZF2会看到上面提到的模块,尝试实例化SomeNameSpace\Module,询问它所定义的所有配置,可能会调用您在那里提供的钩子函数(如onBootstrap() )--就是这样。您的模块负责完成其余部分,即提供服务管理器配置、提供控制器等。所有类都由Composer自动加载。
我相信Zend本身并没有回答如何像公开模块的映像那样公开资源的问题--至少我看到这些问题被提出了,但是在最新版本的文档:http://framework.zend.com/manual/current/en/modules/zend.module-manager.intro.html中没有得到回答。
模块中文件的组织完全取决于您,尽管将源代码放在一个名为src的文件夹中似乎很常见,但是测试可能会进入tests。
https://stackoverflow.com/questions/29610304
复制相似问题