在调用自己(或子)类中的方法之前,需要$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并不实用,但通常这是可读性问题。
当全局方法的名称和某个类的名称相同时,这也有助于避免名称冲突。