0

我已经在互联网上搜索了一个有效的解释,为什么$this未定义时代表当前类。

我在搜索时在文档中找到了这个$this

当从对象上下文中调用方法时,伪变量 $this 可用。$this 是对调用对象的引用(通常是方法所属的对象,但也可能是另一个对象,如果该方法是从辅助对象的上下文中静态调用的)。

我理解在一定程度上,让我们以下面的例子为例:

class Foo {
    public $Database;

    public function __construct() {
        $this->Database = 'Test';
    }
        protected function Test()
    {
         return 'Example';
    }
         public function BarFunction()
    {
           return $this->Test();
    }
}

$Test = new Foo();
echo $Test->Database;
echo "\r\n\r\n";
echo $Test->BarFunction();

输出:

Test

Example

使用静态函数时,self::接管$this

所以我的总体问题是,为什么$this自动占位符代表当前类而无需在使用之前定义?

为什么self::只能与静态函数一起使用?因为总的来说,我在使用时看到它更整洁

self::ProtectedFunction();

超过:

$This->ProtectedFunction();

4

1 回答 1

3

self引用当前类,并$this引用该类的当前实例

于 2013-04-01T23:01:13.563 回答