定义一个没有可见性的类方法是否是“公共”的简写


Is defining a class method without visibility a shorthand of 'public'?

我经常看到代码定义没有可见性关键字的函数。 例如:

class Foo() {
  function bar() {
    // ...
  }
}

它是public功能的简写吗?省略它是一种好习惯吗?

class Foo() {
  public function bar() {
    //..
  }
}

是的,你是对的; 当您省略可见性修饰符时,这意味着它是public

它是 PHP 4 的延续,不支持可见性运算符。 包含此功能是为了向后兼容。

您可以在此处阅读有关它的更多信息。

正如 PHP 文档中所写,

声明没有任何显式可见性关键字的方法定义为公共。

所以,是的,在

class Foo() { public function bar() { //.. } }

Foo::bar()是公开的,但省略可见性关键字从来都不是一个好的做法。如果它是一个快速而丑陋的脚本,为什么不呢,但在其他情况下,您应该指定它。