为什么$ this代表当前的类

时间:2013-04-01 22:55:59

标签: php

我在互联网上搜索了一个有效的解释,为什么$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();

1 个答案:

答案 0 :(得分:3)

self指的是当前的类,$this指的是该类的当前实例