PHP 在 composer 中使用常量的正确方法

PHP the right way to use constants with composer

我在 packagist.org 上有一个 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);