PHP是否允许类功能和属性共享相同的名称?

时间:2013-04-03 08:02:59

标签: php

我的一位老同事在我们的代码中写道:

public function paginate() {
    return $this->paginate;
}

我想知道:这会返回函数paginate()还是类属性$ paginate?

我猜测后者,但奇怪的是我没有找到关于这个主题的任何信息。

4 个答案:

答案 0 :(得分:5)

返回类属性$paginate

如果是return $this->someName();

然后返回函数someName()

答案 1 :(得分:2)

PHP中函数调用后的括号不是可选的,普通方法和函数不是“第一类对象”(它们本身不能作为变量操作,例如,在JavaScript中)。

因此没有歧义,因为$this->paginate();必须是函数调用,而$this->paginate;必须是变量引用。

然而,这并不是特别好的做法,编辑,IDE等可能会将其作为警告突出显示。一般来说,函数和方法应该以动词而不是名词开头,因此函数更好地命名为getPaginate()

答案 2 :(得分:1)

返回一个对象属性:

$this->paginate;

VS

导致运行对象方法(类中的函数称为方法)

$this->paginate();

答案 3 :(得分:0)

如果声明为$paginate,它将返回该函数所属类的public属性或来自另一个类的ihnerits属性。