我正在开发类似框架的应用程序,我希望人们能够开发模块。
模块通过向核心提供有关其功能的信息,为核心应用程序添加其他功能。示例包括允许访问MySql或文件系统或电子邮件的模块。
虽然模块可以提供他们喜欢的额外功能,但是有一个Module类用于包装所提供的功能,每个模块应该提供至少一个这些类以包含在应用程序中。
在作曲家生态系统中,是否有关于PHP模块注册方法的指南或良好实践。如果模块可以提供别名,并描述它们需要的任何配置,那将是另外有用的。
澄清编辑
我有一个核心应用程序,我们称之为example-app
使用example-app
的任何人都应该能够使用应用程序的模块化框架轻松地引入新功能。
所以,我们假设我们有两个模块example-module-1
和example-module-2
。应用程序需要知道从命令行运行时这些模块是否存在。
所有内容都应该从作曲家进行管理,因此您需要核心应用程序以及您希望使用它的任何模块。例如
"require" : {
"php": ">=5.5.0",
"example/example-app" : "^1.0",
"example/example-module-1": "^1.0",
"example/example-module-2": "^1.0"
},
我想知道的是,是否有一种方法可以让模块在安装它们时保存核心应用程序。
我已经有一个模块接口,导入的模块可以放在里面,我只需要一种方法让核心应用程序知道这些类在所有其他作曲家安装的依赖项中定义的位置(例如,我不想要创建一个巨大的班级列表,并逐步完成每个instanceof
}。
我目前唯一能想到的就是提供一个额外的伴侣应用程序(类似bin/example-app-config
),每个模块都会调用它作为composer scripts的一部分。它可以使用cli参数告诉核心应用程序调用模块类以及它具有的任何其他要求。然而,这并不适合我,因为它似乎不会与操作系统无关。