Php 在类构造函数中访问全局数组

Php 在类构造函数中访问全局数组,php,arrays,class,global,globals,Php,Arrays,Class,Global,Globals,我的目标是从另一个PHP文件中定义的全局数组中检索一些数据。我的代码在database.php文件中运行,我要使用的数组在config.php文件中。我知道在类内访问全局数组不是一个好主意,但出于某些原因,我想这样做 我的代码如下: config.php $CONFIG = array(); // ... $CONFIG["DATABASE"] = array(); $CONFIG["DATABASE"]["USERNAME"] = "user"; $CONFIG["DATABASE"]["PA

我的目标是从另一个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";
// ...
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"];
        $this->m_Pass = $CONFIG["DATABASE"]["PASSWORD"];
        $this->m_Host = $CONFIG["DATABASE"]["HOSTNAME"];
        $this->m_Data = $CONFIG["DATABASE"]["DATABASE"];
        $this->m_bConnected = false;
        $this->Connect();
    }

    // ...
};
database.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";
// ...
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"];
        $this->m_Pass = $CONFIG["DATABASE"]["PASSWORD"];
        $this->m_Host = $CONFIG["DATABASE"]["HOSTNAME"];
        $this->m_Data = $CONFIG["DATABASE"]["DATABASE"];
        $this->m_bConnected = false;
        $this->Connect();
    }

    // ...
};
没有给出任何错误(数据库连接失败通知除外)

我无法访问数组元素。例如,
$CONFIG[“DATABASE”][“USERNAME”]
返回一个空值,即使它是用
CONFIG.php中的
“user”
字符串初始化的

我应该如何修改我的代码,以便它可以在类构造函数中访问这个全局数组


(注意:PHP版本是5.3.0)

您的代码看起来不错,所以我认为您应该调试它。在创建数据库类实例之前,请尝试输出$CONFIG,$CONFIG可能会在代码中的某个地方被重新定义/更改。而且不要只检查数组中的一个值——用var\u dump/print\r输出整个数组。

而不是

$CONFIG = array();
使用


我认为一些全局性的东西在
\uuu construct()
中不起作用。我不确定这是一个bug还是按原样设计的

代码

<?php
class Test {
    public $value;

    function __construct() {
        global $value;
        $value = "I am a test.";
    }
}

$test = new Test();
echo $test->value;

”(注意:PHP版本是5.3.0)“--你有没有可能在某个地方也进行了名称空间声明?@Denis:没有,我没有在任何地方进行名称空间声明。你想这样做的“某些原因”(不管是什么)是错误的。此外,您不应该在ctor中调用connect(),因为这是在做工作。在需要连接时调用connect,而不是在创建对象时调用connect。它不必连接就可以处于有效状态。