属性是否默认声明为私有?

时间:2013-04-22 07:54:43

标签: php oop

我有属性$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,我怎么会收到错误?

2 个答案:

答案 0 :(得分:1)

在PHP中,默认Visiblity是公开的。我猜你认为是私有的,因为它是Java和其他OO语言的默认值。

//修改

我的小错误,变量具有强制可见性,部分关于公共,默认是关于方法。 我建议您始终指定您需要的级别以避免混淆。

var keyword是public的别名(如果出于兼容性原因,它们会保留)

答案 1 :(得分:1)

您在

之前遇到第一次错误
echo $node->value;

放入类代码而不调用它,你会得到同样的错误。

你刚才有语法错误:

 $value = NULL;

替换为:

var $value = NULL;

更新

但这是错误的解决方案,只是为了表明你的问题在哪里。 始终设置变量visibility之一:

  • 私有
  • 保护
  • 公共