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");
项目 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);
我在 packagist.org 上有一个 PHP 库,它使用一些常量,随着项目的不同而变化。
我正在尝试使用这样的常量:
常量存储在作曲库 conf.php 中
在 composer init username/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);