我有属性$value
,它会根据我是否在变量声明中添加private
来提供不同的错误消息。
Class Node{
$value = NULL;
public function __construct($value){
$this->value = $value;
}
}
$node = new Node('hello');
echo $node->value;
PHP Parse错误:语法错误,意外T_VARIABLE,期待第4行/home/ubuntu/new.php中的T_FUNCTION
但是,如果我将$value = NULL;
替换为private $value = NULL;
,我会收到不同的错误消息:
PHP致命错误:无法访问第11行/home/ubuntu/new.php中的私有属性Node :: $ value
我认为省略私有一词会自动将该属性设为私有?
修改
我现在明白,默认情况下属性是公开的。如果在未添加$value
的情况下声明属性public
,我怎么会收到错误?
答案 0 :(得分:1)
在PHP中,默认Visiblity是公开的。我猜你认为是私有的,因为它是Java和其他OO语言的默认值。
//修改
我的小错误,变量具有强制可见性,部分关于公共,默认是关于方法。 我建议您始终指定您需要的级别以避免混淆。
var keyword是public的别名(如果出于兼容性原因,它们会保留)
答案 1 :(得分:1)
您在
之前遇到第一次错误echo $node->value;
放入类代码而不调用它,你会得到同样的错误。
你刚才有语法错误:
$value = NULL;
替换为:
var $value = NULL;
但这是错误的解决方案,只是为了表明你的问题在哪里。 始终设置变量visibility之一: