PHP-为什么需要使用$this->;调用其类中的方法


PHP - Why do you need to use $this-> to call a method within its class?

在调用自己(或子)类中的方法之前,需要$this->有什么用处?这意味着要防止什么?默认情况下,引擎应该在类中查找,这不是合乎逻辑的吗?

考虑以下示例:

function bar()
{
    echo "Outside'n";
}
class foo
{
    public function __construct()
    {
        bar();
    }
    public function bar()
    {
        echo "Inside'n";
    }
}
new foo;

因此,如果没有$this->作为构造函数对bar()的调用的前缀,PHP将调用外部函数,而不是方法。使用$this->可以消除歧义,并精确地定义要调用的函数。

如果你的建议是真的(自动搜索类),那么据我所知(等待评论中疯狂的、不可读的破解),在PHP中,一个类方法不可能在全局范围内调用与另一类方法同名的函数。

当然,这可能是合乎逻辑的。这也不是PHP的构建方式。与JavaScript中的相同:

var x = {a: 0, f: function() { alert(a); }};
x.f(); // TypeError, a isn't defined

以及许多其他语言。我想他们不想打破全球范围。与PHP的所有其他问题相比,这真的是一个很大的问题吗?:)

我对php并不实用,但通常这是可读性问题。

当全局方法的名称和某个类的名称相同时,这也有助于避免名称冲突。