我的应用程序的旧配置文件如下所示:
<?php
return array(
'URL' => 'https://' . $_SERVER['HTTP_HOST'] . str_replace('public', '', dirname($_SERVER['SCRIPT_NAME'])),
'DOMAIN' => $_SERVER['HTTP_HOST'],
'PATH_CONTROLLER' => realpath(dirname(__FILE__).'/../../') . '/application/controller/',
'DEBUG' => true,
'EMAIL_USED_MAILER' => 'phpmailer',
'SEND_MAIL_TO' => 'myreal@email.com'
);新的配置文件如下所示:
<?php
return array(
'URL' => 'https://' . $_SERVER['HTTP_HOST'] . str_replace('public', '', dirname($_SERVER['SCRIPT_NAME'])),
'DOMAIN' => $_SERVER['HTTP_HOST'],
'PATH_CONTROLLER' => realpath(dirname(__FILE__).'/../../') . '/application/controller/',
'DEBUG' => false,
'EMAIL_USED_MAILER' => 'phpmailer',
'SEND_MAIL_TO' => 'your_mail@example.net',
'SEND_MAIL_FROM' => '',
'NEW_VAR' => 'foo'
);现在,我想在运行upgrade.php时将这两个文件合并成新文件,如下所示:
<?php
return array(
'URL' => 'https://' . $_SERVER['HTTP_HOST'] . str_replace('public', '', dirname($_SERVER['SCRIPT_NAME'])),
'DOMAIN' => $_SERVER['HTTP_HOST'],
'PATH_CONTROLLER' => realpath(dirname(__FILE__).'/../../') . '/application/controller/',
'DEBUG' => true,
'EMAIL_USED_MAILER' => 'phpmailer',
'SEND_MAIL_TO' => 'myreal@email.com',
'SEND_MAIL_FROM' => '',
'NEW_VAR' => 'foo'
);我尝试使用array_merge,但由于像$_SERVER这样的变量,它在我的例子中不起作用。你知道怎么解决这个问题吗?
发布于 2018-06-02 03:25:04
首先,为了验证我是否正确理解了您的问题-我的答案基于以下假设:
PHP
config.phpgetConfig() { $config = include('config.php'); return $config; } 如果以上都是真的,那么我建议使用以下工作流程:
getConfig()的config.example.php,将当前现有的getConfig()-function (来自假设3)转换为类似下面的内容,所以您进行了一个安全的合并,并保证可以正常工作:代码:
function getConfig() {
$applicationDefaultConfig = array(
'SEND_MAIL_FROM' => '',
'NEW_VAR' => 'foo'
);
$usersConfig = include('config.php');
return array_merge($applicationDefaultConfig, $usersConfig);
}https://stackoverflow.com/questions/50649153
复制相似问题