2011-05-31 61 views
1

我的目標是從另一個PHP文件中定義的全局數組中檢索一些數據。我的代碼在「database.php」文件中運行,我想要使用的數組在「config.php」文件中。在類中使用全局數組

我的代碼如下:

的config.php

$CONFIG = array(); 
// ... 
$CONFIG["DATABASE"] = array(); 
$CONFIG["DATABASE"]["USERNAME"] = "user"; 
$CONFIG["DATABASE"]["PASSWORD"] = "pass"; 
$CONFIG["DATABASE"]["HOSTNAME"] = "127.0.0.1"; 
$CONFIG["DATABASE"]["DATABASE"] = "my_db"; 
// ... 

database.php中

require('config.php'); 

class Database 
{ 
    protected $m_Link; 
    private  $m_User; 
    private  $m_Pass; 
    private  $m_Host; 
    private  $m_Data; 
    private  $m_bConnected; 

    public function __construct() 
    { 
     global $CONFIG; 
     $this->m_User = $CONFIG["DATABASE"}["USERNAME"]; // Line #16 
     $this->m_Pass = $CONFIG["DATABASE"}["PASSWORD"]; 
     $this->m_Host = $CONFIG["DATABASE"}["HOSTNAME"]; 
     $this->m_Data = $CONFIG["DATABASE"}["DATABASE"]; 
     $this->m_bConnected = false; 
     $this->Connect(); 
    } 

    // ... 
}; 

給出的錯誤是:

Parse error: syntax error, unexpected '}', expecting ']' in C:...\database.php on line 16

我無法弄清楚我在這裏做錯了什麼。

請幫我解決這個錯誤。

(注:PHP版本是5.3.0)上的所有4條線

+2

你爲什麼不通過'$ CONFIG [ 'DATABASE']'作爲參數傳遞給你的'Database'類的構造函數? '公共函數__construct($ config){'那麼你不需要全局它。 – 2011-05-31 07:09:15

+1

我同意格雷格。 (真正的)問題不是拼寫錯誤,而是訴諸全局狀態而不是使用依賴注入。傳入配置數組。 – Gordon 2011-05-31 07:14:30

回答

6

["DATABASE"} = ["DATABASE"]

+0

!!!!! Opps ...這是真的嗎? :) – hkBattousai 2011-05-31 07:06:20

6

你是不是在您的配對括號正確

$this->m_User = $CONFIG["DATABASE"}["USERNAME"]; 
----------------------------------^ 

應該

$this->m_User = $CONFIG["DATABASE"]["USERNAME"]; 
1

你有16行,之後3錯字錯誤。

["DATABASE"} = ["DATABASE"]應該是`[ 「數據庫」] = [ 「數據庫」]