自我的背景

时间:2011-08-26 09:48:19

标签: php

当我看到'自我'时,会自动想到静态方法。最近我被指出自我取决于背景。就像'parent'一样,它也可以调用静态方法。考虑这个例子:

error_reporting(-1);

class A
{
    public $var = 1;

    public function __construct($n)
    {
        $this->var = $n;

        self::foo();
    }

    public function foo()
    {
        echo $this->var;
    }
}

$obj = new A(5);

在没有错误的情况下操作,并且在foo $方法中,这是可用的。 有人可以告诉我一些指南,详细解释如何通过自我和父母解决呼叫?

1 个答案:

答案 0 :(得分:2)

$this $是对当前对象的引用,而self是对使用它的类的引用。

示例 - 以下代码的结果为:(B::func)(A::func)

class A {
    function call() {
        $this->func();
        self::func();
    }

    function func() {
        echo '(A::func)';
    }
}

class B extends A {
    function func() {
        echo '(B::func)';
    }
}

$b = new B();
$b->call();