我想写一个Zend Framework 2供应商模块,托管在github上,可以通过composer安装,并提供给全世界!
现在,虽然我在编写模块时没有遇到任何问题,但我正在努力解决这个问题。
我最初的本能是这样做:
- 设置zend framework 2骨架应用程序
- 将我的模块添加为普通模块
- 导航到模块文件夹并创建git-reo
- 处理模块并将模块更新到我的gitto
现在逻辑告诉我这不是正确的方法。所以我在想,也许我把这个模块写为一个独立的框架应用程序之外的模块,推送到gito,然后从gito拉到一个工作应用程序。。。
如果你能指导我学习教程,请告诉我,或者如果你能确认或否认我提出的想法,那也太好了。
您可能需要在模块周围使用一些应用程序来检查它是否工作,但这不应该影响创建该模块的方式。
当谈到ZendFramework2集成模块时,您真正需要的只是一个名为SomeNameSpaceModule
的类,它必须可以通过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会看到提到的模块,尝试实例化SomeNameSpaceModule
,询问它你定义的所有配置,可能会调用你在那里提供的onBootstrap()
之类的钩子函数,仅此而已。你的模块负责完成其余的工作,即提供服务管理器配置、提供控制器等。所有类都由Composer自动加载。
我相信Zend自己还没有回答如何公开模块图像等资源的问题——至少我看到了这些问题,但在最新版本的文档中没有得到回答:http://framework.zend.com/manual/current/en/modules/zend.module-manager.intro.html
模块中文件的组织完全取决于您,尽管将源文件放在名为src
的文件夹中似乎是常见的做法,但测试可能会进入tests
。