我有属性$value
,根据我是否将private
添加到变量声明中,给出不同的错误消息。
Class Node{
$value = NULL;
public function __construct($value){
$this->value = $value;
}
}
$node = new Node('hello');
echo $node->value;
PHP解析错误:语法错误,意想不到的T_VARIABLE,期望T_FUNCTION在/home/ubuntu/new. PHP第4行
然而,如果我用private $value = NULL;
代替$value = NULL;
,我得到一个不同的错误信息:
PHP致命错误:无法访问私有属性Node::$value在/home/ubuntu/new. PHP的第11行
我认为省略术语私有会自动使属性私有?
编辑
我现在明白了属性在默认情况下是公共的。为什么我得到一个错误时,声明属性$value
没有public
前置到它?
echo $node->value;
放置类代码而不调用,你会得到相同的错误。
你只是出现了语法错误:
$value = NULL;
替换为:
var $value = NULL;
更新但这是错误的解决方案,只是为了显示你的问题在哪里。总是设置变量可见性之一:
- 私人
- 公共
在PHP默认可见性是公共的。我猜你认为它是私有的,因为它是Java和其他面向对象语言的默认值。
//编辑
我的小错误,变量具有强制性可见性,关于public的默认部分是关于方法的。我建议总是指定你需要的级别,以避免混淆。
var关键字是public的别名(出于兼容性原因保留了它)