簡體   English   中英

在PHP中,在為類定義公共變量時,如何使用變量作為key => value對中的值?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM