[英]In PHP, how can I use a variable as the value in a key=>value pair when defining a public variable for a class?
我正在尝试使用环境变量来设置我们的数据库机密。 它们在一个类中定义。 复制到这里。 我正进入(状态:
解析错误:语法错误,意外的“意外的'$ _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',
);
}
我认为最好的方法是使用__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',
);
}
}
不幸的是,这是无效的语法。 如注释中指出的那样,在__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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.