功能和变量必须声明为public
或默认为public
?Php - 函数和变量是否必须声明为public?
Class Bread {
$bread = "";
function toast()
{
$bread = "Toasticles!"
}
}
在这个例子中,既是$bread
和功能toast()
公众没有实际宣告它们的方式?
这是一个有关实例变量和函数的知名度
功能和变量必须声明为public
或默认为public
?Php - 函数和变量是否必须声明为public?
Class Bread {
$bread = "";
function toast()
{
$bread = "Toasticles!"
}
}
在这个例子中,既是$bread
和功能toast()
公众没有实际宣告它们的方式?
这是一个有关实例变量和函数的知名度
如果声明$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
,那么出于显而易见的原因,大部分代码都变得毫无用处(并且不起作用)。
属性:
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.
似乎是愚蠢的。为什么使方法默认为public,但实例变量必须明确声明。 –
好问题,我想你应该问StackOverflow。 – darckcrystale
只要做到这一点。这是一个没有好处的捷径。 –
[没有任何明确的可见性关键字声明的方法被定义为public。](http://php.net/manual/en/language.oop5.visibility.php#language.oop5.visiblity-methods) –
不,他们不必须宣布公开(否则就没有私人的保护或即使存在也不受保护);除非另有说明,否则它们将被公开。但为了清楚起见,最好指定 –