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

Dav*_*gel 2 php

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

$cms->userClass->function();
Run Code Online (Sandbox Code Playgroud)

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

global $cms;
Run Code Online (Sandbox Code Playgroud)

为此能够访问数据库类:

$cms->db->function();
Run Code Online (Sandbox Code Playgroud)

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

Web*_*net 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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我在这里进行一次调整......除非$ cms*必须*是公开的,否则我会继续将其转换为受保护的并且只有一个getter返回它.然后$ cms的上下文在执行期间不太可能意外更改. (2认同)