开放的编程资料库

当前位置:我爱分享网 > Python教程 > 正文

使用 Composer 自动加载 ZF 模块

ZendFramework3的一个方面,我们特别关注的是利用Composerecosystem。我们现在提供了许多Composer插件,用于处理初始项目安装、向应用程序注册已安装的模块等。这是我特别想谈的“更多”。

安装时注册模块

借助ZF2,我们能够实现将第三方模块安装到现有应用程序中的能力,从而实现模块生态系统。安装的标准口头禅是:

  1. 安装模块:composerrequiresome/module
  2. 向应用程序注册模块:编辑config/(application|modules).config.php并将Some\Module添加到模块列表中。

这第二个项目有问题:

  • 容易忘记
  • 容易打错字

对于v3版本,我们希望尽可能解决这个问题。我们能够通过Composer插件zend-component-installer来完成。

模块作者现在可以将一些元数据添加到他们的包中,如下所示:

"extra": {
  "zf": {
    "module": "Some\\Module"
  }
}

并且,如果插件存在于用户的应用程序中,则在安装时,它会将包注册为应用程序的模块!(此外,如果您稍后删除包,它会删除它!)

我们还添加了允许将包指定为组件的规则;在这种情况下,模块被添加到模块列表的顶部,以确保用户空间模块可以覆盖其设置。

这种通过Composer完成一项常见任务的能力让我很高兴。

通过Composer自动加载您自己的模块

最近,在开发Apigility时,一位合作者提出了一个建议:“我们建议使用Composer进行自动加载,但Apigility创建的模块使用默认的模块自动加载功能;我们不能创建一个实用程序来启用Composer自动加载生成的模块吗?”

事实证明这很容易实现,我们最终创建了一个新包zfcampus/zf-composer-autoloading,以使其可重复使用。

假设您在ZF或Apigility应用程序中创建了一个名为Blog的新模块。很有可能,您将一个Module.php文件放在模块的根目录下,它要么包含一个Blog\Module类,要么需要一个来自您的源代码树的类文件。让我们设置自动加载:

$ composer require --dev zfcampus/zf-composer-autoloading
$ ./vendor/bin/autoload-module-via-composer Blog

完成。

该软件包仅附带一个供应商二进制文件,它执行以下操作:

  • 在您的composer.json中添加一个条目以自动加载模块。
  • 重新生成Composer自动加载规则。

它会根据检测到的目录结构自动检测模块类型(PSR-0或PSR-4),但也允许您通过CLI标志指定类型。如果Composer二进制文件不在您的路径上,您还可以告诉它它在哪里。

完成后,如果您在模块中定义了getAutoloaderConfig()方法,您现在可以删除它,因为它是多余的!

此工具适用于任何版本的现有ZF2和Apigility安装。

作曲家!

未经允许不得转载:我爱分享网 » 使用 Composer 自动加载 ZF 模块

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏