Php设置变量属性默认值在php 7.1中不起作用

时间:2017-04-26 03:04:22

标签: php

我有一个变量属性设置默认值数组,它在我的php 5.6 localhost中工作,但是当我用php 7.1上传到服务器时无法工作,有谁可以告诉我为什么?

class foo {
    var $bar = array();

    function baz($data) {
        $this->bar['data'] = $data; <---- works in php 5.6, not working in php 7.1
    }
}

在php 7.1中,我必须更新construct

中的变量属性
function __construct(){
    $this->bar = array();
}

1 个答案:

答案 0 :(得分:0)

您提供的代码从PHP版本7.1.25到7.3.2(检查3v4l.org)产生的结果非常相似:

object(foo)#1 (1) {
  ["bar"]=>
  array(1) {
    ["data"]=>
    int(22)
  }
}

即使它可行,我还是建议您像发现的那样总是在__construct中初始化类属性:

function __construct(){
    $this->bar = array();
}

更重要的是,更喜欢使用public / protectedprivate visibility modifiers中的一个,而不是使用var来将public引擎盖。