如何为ZFT编写供应商程序/模块

时间:2015-04-13 16:24:33

标签: zend-framework2 composer-php

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

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

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

  1. 设置zend框架2骨架应用
  2. 将我的模块添加为普通模块
  3. 导航到模块文件夹并创建一个git repo
  4. 处理模块并将模块更新为我的gitto ...
  5. 现在逻辑告诉我这不是正确的方法。所以我在想,也许我把这个模块写成一个独立的骨架应用程序,推送到gito,然后从gito拉到一个正在运行的应用程序......

    如果您可以指导我阅读教程,请告诉我,或者您是否可以确认或否认我的建议,这也很棒。

1 个答案:

答案 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