2011-05-31 63 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"]应该是`[ “数据库”] = [ “数据库”]