PHP:一个类中的$ this变量如何成为另一个类的对象?

时间:2011-01-21 15:12:30

标签: php oop this static-methods

以下是一个例子:

class Test {

    public function TestMethod() {

        print_r($this); // Gives me "Test1 Object ( )"

    }
}

class Test1 {

    public function Test1Method() {

        Test::TestMethod();

    }
}

$test1 = new Test1;
$test1->Test1Method();

我发现这很奇怪。有人可以向我解释为什么会这样吗?

3 个答案:

答案 0 :(得分:7)

来自http://www.php.net/manual/en/language.oop5.basic.php

  

伪变量$this可用   从一个方法中调用一个方法时   对象上下文。 $this是一个参考   到调用对象(通常是   该方法所属的对象,   但可能是另一个对象,如果是   方法从静态调用   次要对象的上下文。)

但这并不一定有意义,并且如果E_STRICT已启用,则会调出警告。

答案 1 :(得分:4)

简短的回答:你使用静态函数调用调用“非静态”方法,然后php尝试查找“$ this”,最后一个真正的“$ this”是Test1中的那个。

如果您打开E_STRICT错误报告,它会抱怨。

答案 2 :(得分:0)

late static binding如果我没有误会,可能就像星期五晚上一样。