2017-05-04 49 views
0

功能和变量必须声明为public或默认为publicPhp - 函数和变量是否必须声明为public?

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

在这个例子中,既是$bread和功能toast()公众没有实际宣告它们的方式?

这是一个有关实例变量和函数的知名度

+0

只要做到这一点。这是一个没有好处的捷径。 –

+0

[没有任何明确的可见性关键字声明的方法被定义为public。](http://php.net/manual/en/language.oop5.visibility.php#language.oop5.visiblity-methods) –

+0

不,他们不必须宣布公开(否则就没有私人的保护或即使存在也不受保护);除非另有说明,否则它们将被公开。但为了清楚起见,最好指定 –

回答

1

如果声明$bread没有知名度,你得到解析错误:

Parse error: syntax error, unexpected '$bread' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in [...][...] on line x

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

功能toast()默认情况下将为public如果您不明确指定可见性。

但请记住,明确的做法是更好,比隐式做事。因此,在任何情况下声明可见性都是公开的,可能会帮助那些在你之后阅读代码的人。如果你不关心那些可能与你的代码一起工作的人(在这种情况下你可能会感到羞愧),可以考虑另一个例子:你编写了大量的代码,但没有明确声明可见性,当时它的编码为public。但是,如果PHP开发者变得疯狂并将默认可见性更改为private,那么出于显而易见的原因,大部分代码都变得毫无用处(并且不起作用)。

2

问题按照PHP documentation

属性:

Class properties must be defined as public, private, or protected. If declared using var, the property will be defined as public.

方法:

Methods declared without any explicit visibility keyword are defined as public.

+0

似乎是愚蠢的。为什么使方法默认为public,但实例变量必须明确声明。 –

+0

好问题,我想你应该问StackOverflow。 – darckcrystale