-1

我有一个属性$value,它会根据我是否private在变量声明前添加不同的错误消息。

Class Node{
        $value = NULL;
        public function __construct($value){
                $this->value = $value;
        }
}

$node = new Node('hello');
echo $node->value;

PHP 解析错误:语法错误,意外的 T_VARIABLE,在第 4 行的 /home/ubuntu/new.php 中需要 T_FUNCTION

但是,如果我替换$value = NULL;private $value = NULL;我会收到不同的错误消息:

PHP 致命错误:无法访问第 11 行 /home/ubuntu/new.php 中的私有属性 Node::$value

我认为省略私有一词会自动使财产私有?

编辑

我现在明白属性默认情况下是公共的。$value在声明没有附加属性的属性时,我怎么会出错public

4

2 回答 2

1

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

//编辑

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

var 关键字是 public 的别名(出于兼容性原因,它们保留)

于 2013-04-22T07:58:25.213 回答
1

您之前遇到了第一个错误

echo $node->value;

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

您只是在线出现语法错误:

 $value = NULL;

用。。。来代替:

var $value = NULL;

更新

但这是错误的解决方案,只是为了显示您的问题在哪里。始终将可变可见性设置为以下之一:

  • 私人的
  • 受保护
  • 上市
于 2013-04-22T07:59:32.487 回答