为什么在引用同一类中的方法或变量时,必须在PHP中使用$ this?

Pet*_*r D 1 php oop this

我向Java开发人员解释为什么他的方法调用不起作用.他只需要添加$this->method_name();

然后他问我:"为什么我需要在同一个类中声明它时将$ this添加到方法中?"

我真的不知道该怎么回答.也许是因为PHP有​​一个全局命名空间,你需要明确地告诉它你要找的方法属于当前的类吗?但那么为什么PHP在查看全局命名空间之前不检查方法的当前类?

phi*_*dah 9

问题还在于,如果你声明一个function foo()和一个方法foo(),php会很难搞清楚你的​​意思 - 考虑这个例子:

<?php
function foo()
{
    echo 'blah';
}

class bar
{
    function foo()
    {
         echo 'bleh';
    }
    function bar()
    {
         // Here, foo() would be ambigious if $this-> wasn't needed.
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

所以基本上你可以说PHP - 因为它的"非100% - 对象导向"(意味着你也可以在类外有函数) - 有这个"功能":)