PHP 是与作曲家一起使用常量的正确方法



我在 packagist.org 上有一个PHP库,它使用一些常量,从一个项目到另一个项目。

我正在尝试使用这样的常量:

  • 常量存储在conf.php in 作曲家 libriary

  • 作曲家初始化用户名/mylib 命令之后,我从/vendor/username/mylib/conf.php复制到本地/conf.php并将其用于当前项目配置

对于项目 1,在/conf 中.php

define("HOST", "host1.com");

项目 2,在/conf 中.php

define("HOST", "host2.com");

但这看起来是一种错误的方式。

在作曲家库中使用常量的正确方法是什么?

我更喜欢用稍微不同的方式做到这一点

在我的图书馆里,我会
/vendor/vendorname/pkg/config/system.php
/vendor/vendorname/pkg/config/local.sample.php

并提供复制说明


/vendor/vendorname/pkg/config/local.sample.php
/config/local.php

那么在我的代码中我会有类似的东西

$sysconffile = static::$vendorbasedir . '/config/system.php';
if (file_exists($sysconffile)) {
$sysconf = require $sysconffile;
} else {
throw new RuntimeException('Sys Conf Missing!');
}
$localconf = [];
$localconfile = static::$appbasedir . '/config/local.php';
if (file_exists($localconfile)) {
$localconf = require $localconfile;
}

更新:

我也更喜欢带有数据的静态类而不是定义,因为定义在文档中非常松散,类型提示和可重写..

所以一旦我有两个配置,我通常会这样做

static::$config = array_replace_recursive($sysconf, $localconf);

相关内容

  • 没有找到相关文章

最新更新