有一种更有效/优雅的方式来配置解析?

时间:2017-12-18 01:01:00

标签: php config ini

示例:

$CONF = parse_ini_file('cfg.ini', true);
$EmailUN = $CONF['EM']['key01'];
$EmailPW = $CONF['EM']['key02'];
$EmailTO = $CONF['EM']['key03'];
$SMSAPI = $CONF['SMS']['key01'];
$SMSUN = $CONF['SMS']['key02'];
$SMSPW = $CONF['SMS']['key03'];
$SMSNUM = $CONF['SMS']['key04'];

是否有更有效/更优雅的方式导入此数据?我想在学习的同时学习最佳实践。我不想用我想要密钥的对象填满我的php文档的顶部。如果这是重复,我提前道歉。

1 个答案:

答案 0 :(得分:0)

一种方法是访问配置的辅助函数。

例如,如果您想要访问以下配置:

config('SMS.key01');

您可以将config函数定义为:

function config(string $key)
{
    static $config = parse_ini_file('cfg.ini', true);

    $curr = $config;
    foreach(explode('.', $key) as $segment) {
        if(!isset($curr[$segment]) {
            return null;
        } else if(is_array($curr[$segment])) {
            $curr = $curr[$segment];
            continue;
        }

        return $curr[$segment];
    }
}

以上是一个基于Laravel的configarray_get助手的最小示例。您的辅助函数可能需要在应用程序或框架的上下文中以不同方式实现。

此方法的主要优点是,该功能中包含有关如何存储和访问配置的所有实现细节。你正在做的事情现在将低级实现细节渗透到你的其余代码中。