首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP将数组从旧配置文件合并到新配置文件

PHP将数组从旧配置文件合并到新配置文件
EN

Stack Overflow用户
提问于 2018-06-02 02:26:03
回答 1查看 241关注 0票数 0

我的应用程序的旧配置文件如下所示:

代码语言:javascript
运行
复制
<?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'
  );

新的配置文件如下所示:

代码语言:javascript
运行
复制
<?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时将这两个文件合并成新文件,如下所示:

代码语言:javascript
运行
复制
<?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这样的变量,它在我的例子中不起作用。你知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 03:25:04

首先,为了验证我是否正确理解了您的问题-我的答案基于以下假设:

PHP

  • 您正在开发一个安装在多个服务器上的PHP应用程序(您可以自己下载,也可以由其他人下载)您的
  1. 安装可以有自己的自定义配置,假设在名为config.php
  2. You的文件中读取应用程序中某处的用户配置,假设您有一个类似于getConfig() { $config = include('config.php'); return $config; }
  3. 的函数您正在更新此应用程序,该更新会带来一些用户可以更改的新配置选项。

如果以上都是真的,那么我建议使用以下工作流程:

  1. 不会接触用户配置文件。是的,它可以自动完成,但很难做到这一点,而且把事情搞砸的机会很大。例如:如果用户有一个选项写在两行上-PHP-语法正确,但是如果您在upgrade.php中假设每个配置都在一行上,那么您很可能会在某个地方破坏他或她的配置file.
  2. Document新的配置选项,和/或提供一个包含所有可用的getConfig()config.example.php,将当前现有的getConfig()-function (来自假设3)转换为类似下面的内容,所以您进行了一个安全的合并,并保证可以正常工作:

代码:

代码语言:javascript
运行
复制
function getConfig() { 
    $applicationDefaultConfig = array(
        'SEND_MAIL_FROM' => '',
        'NEW_VAR' => 'foo'            
    );
    $usersConfig = include('config.php'); 
    return array_merge($applicationDefaultConfig, $usersConfig); 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50649153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档