PHP 5.3.0包含的时髦问题

时间:2009-12-17 23:23:23

标签: php

我有一个php文件,里面有一个类,需要从我的配置文件中读取一个变量。配置文件包含在包含类和类本身的页面中(包括require_once)。但是,根据我得到的错误,我需要读取的变量($ cfg)在类文件中显然是未定义的:

  

注意:未定义的变量:第45行的/opt/lampp/htdocs/screia/obj/MemberProfile.class.php中的cfg

我尝试通过添加:

在配置文件中将其设为全局
global $cfg;

但它仍然不会找到它。我有一个朋友的建议,可能在5.3.0中使用了新的命名空间,他们改变了包含语义。这是真的吗?

2 个答案:

答案 0 :(得分:2)

你误解了global的工作方式。您必须使用该变量将其放在函数体中。如:

class Something {
    function foo() {
        global $cfg;
        // Code using $cfg here
    }
}

这对你有用。但是,使用global是一种不好的做法,您应该考虑在实例化时或通过方法将所需的配置传递给类。

答案 1 :(得分:0)

在抛出通知的行上的类文件中,尝试使用全局例如前缀$ cfg在读取变量之前global $cfg

另外,检查类文件中$ GLOBALS的内容,例如isset($GLOBALS['cfg'])