0

考虑以下代码:

class Upper {
    private $lower;
    function __construct($passme1, $passme2) {
        if(!class_exists("Lower")) {
            include 'path/to/file.php';
        }
        $this->lower = new Lower($passme1, $passme2);
    }
    //functions
    public function foo() {
        //queries database and returns user specific information
    }
}

在链接文件中,我有Lower类:

class Lower {
    function __construct($passme1, $passme2) {
        //sort the passed variables out
    }
    public function bar() {
        //trying to access the public function foo of class Upper
    }
}

我发现自己需要从 Lower 类的函数栏中访问 Upper 类的函数 foo。

这是可能吗?

谢谢你,

4

1 回答 1

2

要从中访问Upper::foo()Lower::bar()您必须将$this变量作为参数传递:

低年级:

public function bar (Upper $upper) {
    $upper->foo();
}

在Upper类的一些方法中:

$this->lower->bar($this);

Ps:如果您不需要访问$thisinUpper::foo()您可能希望将方法声明为static然后执行 in Lower::bar()

Upper::foo(); // calls static method foo of class Upper
于 2013-04-17T17:20:52.907 回答