首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中,如何在为类定义公共变量时使用变量作为key=>value对中的值?

在PHP中,如何在为类定义公共变量时使用变量作为key=>value对中的值?
EN

Stack Overflow用户
提问于 2018-08-04 05:34:19
回答 2查看 102关注 0票数 0

我正在尝试使用环境变量来设置我们的数据库机密。我得到了:

分析错误:语法错误,意外的“意外的'$_SERVER'”

不允许使用变量。

有没有办法解决我错过的这个问题?

class DATABASE_CONFIG {
        public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => $_SERVER['DB_DEFAULT_HOST'],
                'login' => $_SERVER['DB_DEFAULT_LOGIN'],
                'password' => $_SERVER['DB_DEFAULT_PASSWORD'],
                'database' => $_SERVER['DB_DEFAULT_DATABASE'],
                'prefix' => ''
                //'encoding' => 'utf8',
            );
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-04 05:49:29

我认为最好的方法是使用__construct方法并像这样填充变量:

class DATABASE_CONFIG {
  public $default = [];
  public function __construct(){
      $this->default = array(
              'datasource' => 'Database/Mysql',
              'persistent' => false,
              'host' => $_SERVER['DB_DEFAULT_HOST'],
              'login' => $_SERVER['DB_DEFAULT_LOGIN'],
              'password' => $_SERVER['DB_DEFAULT_PASSWORD'],
              'database' => $_SERVER['DB_DEFAULT_DATABASE'],
              'prefix' => ''
              //'encoding' => 'utf8',
            );
    }
}
票数 2
EN

Stack Overflow用户

发布于 2018-08-04 05:48:37

不幸的是,这是无效的语法。正如注释中所指出的,在__construct()中分配它。最好的方法是将变量作为参数传递。

class DATABASE_CONFIG {

        public $default;

        public function __construct($default)
        {
            $this->default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => $default['DB_DEFAULT_HOST'],
                'login' => $default['DB_DEFAULT_LOGIN'],
                'password' => $default['DB_DEFAULT_PASSWORD'],
                'database' => $default['DB_DEFAULT_DATABASE'],
                'prefix' => ''
                //'encoding' => 'utf8',
            );
        }

  }

  // Usage
  $foo = new DATABASE_CONFIG($_SERVER);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51680338

复制
相关文章

相似问题

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