[英]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.