【发布时间】:2011-09-05 06:11:59
【问题描述】:
我的目标是从另一个 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();
}
// ...
};
给出的错误是:
解析错误:语法错误,意外 '}',期待 ']' 在 C:...\database.php 第 16 行
我无法弄清楚我在这里做错了什么。
请帮我解决这个错误。
(注:PHP版本为5.3.0)
【问题讨论】:
-
为什么不将
$CONFIG['DATABASE']作为参数传递给Database类构造函数?public function __construct($config) {那你就不需要全局了。 -
我同意格雷格的观点。 (真正的)问题不是错字,而是您诉诸全局状态而不是使用依赖注入。传入配置数组。
标签: php arrays class constructor global