繁体   English   中英

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

[英]PHP the right way to use constants with composer

我在packagist.org上有一个PHP库,该库使用一些常量,各个项目之间会有所不同。

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

  • 常量存储在作曲家库中的conf.php

  • composer init username / mylib命令之后,我从/vendor/username/mylib/conf.php复制到本地/conf.php并将其用于当前项目配置

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

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

project2,在/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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM