PHP - 为什么需要使用$ this->在类中调用方法?

时间:2012-02-16 04:42:58

标签: php oop inheritance

在从自己(或孩子)的类中调用方法之前要求$this->有什么用处?这意味着什么?认为默认情况下引擎应该在类中看起来不合逻辑吗?

3 个答案:

答案 0 :(得分:4)

考虑以下示例:

function bar()
{
    echo "Outside\n";
}

class foo
{
    public function __construct()
    {
        bar();
    }

    public function bar()
    {
        echo "Inside\n";
    }
}

new foo;

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

当你的全局方法与该类的名称相同时,它还有助于避免名称冲突。