【问题标题】:Php - Do functions and variables have to be declared public?Php - 函数和变量是否必须公开?
【发布时间】:2017-10-03 02:47:14
【问题描述】:

函数和变量必须声明为public 还是默认为public

Class Bread {
    $bread = "";    
    function toast()
    {
        $bread = "Toasticles!"
    }
}

在此示例中,$bread 和函数 toast() 是否都是公开的,但实际上没有声明它们?

这是一个关于实例变量和函数可见性的问题

【问题讨论】:

标签: php encapsulation public


【解决方案1】:

根据PHP documentation

属性:

类属性必须定义为公共、私有或受保护。 如果使用 var 声明,该属性将被定义为 public。

方法:

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

【讨论】:

  • 看起来很笨。为什么要让方法默认公开,但实例变量必须显式声明。
  • 好问题,我想你应该在 StackOverflow 上提问。
【解决方案2】:

如果你声明 $bread 不可见,你得到一个解析错误:

解析错误:语法错误,意外的'$bread' (T_VARIABLE),在 [...][...] x

这是因为,正如@darkcrystale 和PHP documentation states 所提到的,类属性必须定义为公共、私有或受保护的。如果使用 var 声明,该属性将被定义为 public。

如果您没有明确指定可见性,函数toast() 将默认为public

但请记住,显式地做事比隐式地做事更好。因此,在每种情况下都将可见性声明为公开可能会帮助那些在您之后阅读您的代码的人。如果您不关心那些可能会使用您的代码的人(顺便说一句,在这种情况下您会感到羞耻),请考虑另一个示例:您编写了很多没有明确声明可见性的代码,当时它是public。但是,如果 PHP 开发人员发疯了并将默认可见性更改为 private,那么您的大部分代码将变得无用(并且无法工作),原因很明显。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2012-10-17
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多