就像现在一样,我将我的班级系统嵌入到我的核心课程中。所以我这样称呼我的课程:
$cms->userClass->function();
但这意味着对于我在userClass中的每个函数,我总是需要添加:
global $cms;
能够以这样的方式访问数据库类:
$cms->db->function();
有没有办法为整个类设置全局,而不必在每个函数的开头定义它?
答案 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"];
}