我想编写一个Zend Framework 2供应商模块,托管在github上,可以通过作曲家安装并提供给全世界!
现在虽然我在编写模块时没有任何问题,但我正在努力解决这个问题。
我最初的直觉是做这样的事情:
现在逻辑告诉我这不是正确的方法。所以我在想,也许我把这个模块写成一个独立的骨架应用程序,推送到gito,然后从gito拉到一个正在运行的应用程序......
如果您可以指导我阅读教程,请告诉我,或者您是否可以确认或否认我的建议,这也很棒。
答案 0 :(得分:2)
您可能需要在模块周围安装一些应用程序来检查它是否有效,但这不会影响您创建该模块的方式。
当涉及Zend Framework 2集成模块时,您真正需要的是一个名为SomeNameSpace\Module
的类,它必须可以通过Composer自动加载。请注意,不需要将此文件放在特定位置。 ZF2将检测到您正在使用Composer,只需检查class_exists()
而不是尝试查找文件,包含它然后检查类。
这个类应该以ZF2期望模块执行此操作的方式显示有关模块的一些配置信息,即添加引导程序事件侦听器,通过getConfig()
返回配置数据等。它不需要为{{1}返回任何内容因为这就是Composer的用途。
要将模块添加到ZF2应用程序,请将getAutoloaderConfig()
名称添加到文件SomeNameSpace
:
config/application.config.php
ZF2会看到提到的模块,尝试实例化 return array(
'modules' => array(
'OtherStuffForTheDemoApp',
'SomeNameSpace' # this enables your module in your demo app
# and anywhere else where it's being used
),
,询问你定义的所有配置,可能会调用你在那里提供的SomeNameSpace\Module
等钩子函数 - 而这就是它。您的模块负责完成其余工作,即提供服务管理器配置,提供控制器等。所有类都由Composer自动加载。
我认为Zend本身没有回答如何公开模块图像等资源的问题 - 至少我看到这些问题被提出,但是在最新版本的文档中没有回答:{{3} }
模块中的文件组织完全取决于您,虽然将源放在名为onBootstrap()
的文件夹中似乎很常见,但测试可能会进入src
。