如何为 ZFT 编写供应商 programme/module

How to write a vendor programme/module for ZFT

我想编写一个 Zend Framework 2 供应商模块,托管在 github 上,可通过 composer 安装并提供给全世界!

现在虽然我在编写模块时没有问题,但我正在努力解决这个问题的机制。

我最初的直觉是做这样的事情:

  1. 设置 zend framework 2 骨架应用程序
  2. 将我的模块添加为普通模块
  3. 导航到模块文件夹并创建一个 git 存储库
  4. 在模块上工作并将模块更新到我的 gitto...

现在逻辑告诉我这不是正确的方法。所以我在想,也许我将模块编写为框架应用程序之外的独立模块,推送到 gito,然后从 gito 拉到工作应用程序...

如果你能给我指导教程,请告诉我,或者如果你能确认或否认我提出的想法,那也很好。

您的模块可能需要一些应用程序来检查它是否有效,但这不应影响您创建该模块的方式。

当谈到 Zend Framework 2 集成模块时,您真正需要的只是一个名为 SomeNameSpace\Module 的 class,它必须可以通过 Composer 自动加载。请注意,不需要将此文件放在特定位置。 ZF2 将检测到您正在将它与 Composer 一起使用,并简单地检查 class_exists() 而不是尝试查找文件、包含它然后检查 class。

这个 class 应该以 ZF2 期望模块执行此操作的方式显示有关模块的一些配置信息,即通过 [=13 添加 bootstrap 事件侦听器、return 配置数据=] 等等。getAutoloaderConfig() 不需要 return 任何东西,因为这就是 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() 之类的挂钩函数 - 仅此而已。您的模块负责完成其余工作,即提供服务管理器配置、提供控制器等。所有 classes 都由 Composer 自动加载。

我相信 Zend 本身还没有回答如何公开模块图像等资源的问题 - 至少我看到有人提出了这些问题,但在最新版本的文档中没有回答:http://framework.zend.com/manual/current/en/modules/zend.module-manager.intro.html

模块内的文件组织完全取决于您,尽管将源代码放在名为 src 的文件夹中似乎是常见的做法,测试可能会进入 tests.