设置一个全局而不是每个函数?

时间:2011-03-19 13:44:38

标签: php

就像现在一样,我将我的班级系统嵌入到我的核心课程中。所以我这样称呼我的课程:

$cms->userClass->function();

但这意味着对于我在userClass中的每个函数,我总是需要添加:

global $cms;

能够以这样的方式访问数据库类:

$cms->db->function();

有没有办法为整个类设置全局,而不必在每个函数的开头定义它?

2 个答案:

答案 0 :(得分:5)

如果你构建自己的类并将这些函数放在类中,你可以在类中设置一个属性并通过$ this-> var ....

$class = new MyClass($cms); echo $class->cms; //doesn't work cause it's private class MyClass () { private $cms; //private so it's only accessible within this class function __construct ($cms) { $this->cms = $cms; } //all your functions here can use $this->cms function myFunction () { echo $this->cms->func(); //this will work } }

答案 1 :(得分:1)

我认为班级不存在全球性。

然而,有几种选择:

  • 引用了类中的全局$ cms变量,所以:

    private $cmsref;
    function __construct(){
        global $cms;
        $this->cmsref = &$cms; // $this->cmsref will be a reference to $cms now
    }
    
  • 使用超全球$ _GLOBALS:

    function foo(){
        // to access $cms:
        $_GLOBALS["cms"];
    }