如何在使用Composer时处理配置文件和默认设置


How to handle config files and default settings when using Composer?

我想知道在使用Composer时,处理脚本配置文件的最佳做法是什么。

更详细地说,如果我有一个有几个选项或设置的脚本,我通常只会将它们作为变量或常量添加到config.php文件或类似文件中,然后需要该文件作为我的脚本。或者,如果脚本是一个简单的类,那么只需使用类属性。。。基本的东西,对吧?

所以,我的问题是,随着PSR-4、自动加载、Composer等的出现,首选的方法是什么?

要求用户直接编辑vendor/中的文件是错误的(例如:编辑配置文件或类中的属性等)。此外,这些编辑不会在更新时被覆盖吗?

我考虑在脚本中使用defined()来查找某些常量,用户可以在自己的配置文件中设置这些常量。这可能适用于较小的项目,但可能会变得繁琐且难以扩展。对于某些脚本,如果常量不是由用户定义的,那么可能也很难找到合理的默认值。

我还考虑过使用Composer的一个"钩子"来触发一个脚本,该脚本将配置文件移动到项目根目录之类的地方。但我讨厌在用户的项目中随意删除一个配置文件。。。

我是不是想得太多了?你们通常是如何处理这种情况的?

没有配置文件。让包含项目的代码在运行时设置配置值。

如果您使用的是面向对象的php,您可能希望将任何所需的配置参数作为构造函数或工厂方法的参数,并为可选参数或存在合理默认值的参数提供setter方法。