PHP中类方法的默认可见性

Yad*_*ada 113 php oop visibility

我查看了手册,但似乎无法找到答案.

对于没有可见性声明的方法,PHP的默认可见性是什么?PHP是否具有Java中的包可见性?

例如,在以下代码中,是go()公共还是私有?

class test {
  function go() {
  }
}
Run Code Online (Sandbox Code Playgroud)

我问的原因是我看到很多构造函数代码编写为,function __construct()而某些代码编写为public function __construct().它们是等价的吗?

Jan*_*ice 172

默认是公开的.

类方法可以定义为public,private或protected.声明没有任何显式可见性关键字的方法被定义为public.

http://www.php.net/manual/en/language.oop5.visibility.php

  • 属性也一样 (9认同)
  • 常数也是如此. (6认同)

Joh*_*nco 21

默认是公开的.总是包含它是一个很好的做法,但PHP4支持没有访问修饰符的类,所以在遗留代码中看不到它们的使用是很常见的.

不,PHP没有包可见性,主要是因为直到最近PHP还没有包.

  • @Ian:我会说,因为"显性比隐含更好"(如[蟒蛇之禅](http://stackoverflow.com/questions/228181/the-zen-of-python)所说).它导致其他程序员浪费脑循环,想知道构造函数是私有的还是公共的或什么.如果人们总是使用访问修饰符,原始海报可能甚至没有问过这个问题. (16认同)

Tom*_*kas 8

默认为public.原因可能是向后兼容性,因为旧代码期望它是公开的(如果不公开则会停止工作).


Sas*_*asa 7

默认可见性是PUBLIC

资源