【问题标题】:How to handle config files and default settings when using Composer?使用 Composer 时如何处理配置文件和默认设置?
【发布时间】:2016-01-30 08:06:50
【问题描述】:

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

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

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

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

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

我还考虑过使用 Composer 的“钩子”之一来触发将配置文件移动到项目根目录等某个位置的脚本。但是后来我讨厌在用户的项目中放置一个随机配置文件......

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

【问题讨论】:

  • 你的问题到底是什么?
  • 正如帖子所说,我想知道在使用自动加载(例如使用 Composer)时处理外部配置文件的最佳做法是什么。
  • 一般是通过配置绑定到框架上,有一个Configuration类。
  • 在使用有意义的框架的情况下。但我更多的是询问较小的脚本,或者何时不使用框架。
  • 我用了不正确的词。我会使用一些 DependencyInjection 组件(通常是 1-2 个包,而不是整个框架)来处理此配置加载。像这样symfony.com/doc/current/cookbook/bundles/configuration.html

标签: php composer-php config


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2019-09-20
    相关资源
    最近更新 更多