我向Java开发人员解释为什么他的方法调用不起作用.他只需要添加$this->method_name();
然后他问我:"为什么我需要在同一个类中声明它时将$ this添加到方法中?"
我真的不知道该怎么回答.也许是因为PHP有一个全局命名空间,你需要明确地告诉它你要找的方法属于当前的类吗?但那么为什么PHP在查看全局命名空间之前不检查方法的当前类?
问题还在于,如果你声明一个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% - 对象导向"(意味着你也可以在类外有函数) - 有这个"功能":)