在构造函数或PHP中的声明中初始化数组有什么区别?

时间:2015-09-29 12:56:15

标签: php

class X
{
    private $myVar;

    function __constructor()
    {
        this->myVar = array();
    }
}

class X
{
    private $myVar = array();

    function __constructor()
    {
    }
}

有什么区别?哪个更好?

3 个答案:

答案 0 :(得分:2)

除了明显的语法差异之外,除了明显的语法差异之外,没有实际意义。该数组的行为相同,所有代码也依赖于它。

如果你想进入边缘情况,如果你在实例化对象时运行构造函数(例如,如果你extend并覆盖了构造函数没有调用parent::__construct)。在第一种情况下,$myVar将是null,这可能会导致代码依赖于它是一个数组。

我建议在声明属性时始终初始化,因为它的代码更少,更明显你对变量的意图是什么,并且你避免了如上所述的奇怪的边缘情况。

答案 1 :(得分:2)

嗯,没有性能差异,但我建议在声明类变量时执行此操作,因为它将提供变量属性和访问修饰符的概念,而无需读取整个代码。

答案 2 :(得分:2)

在这里,您没有初始化任何内容,只需键入您的变量 在属性中初始化变量可以很好地查看属性类型,并根据业务逻辑设置自定义默认值,而不是 PHP 给出的1d 就性能而言,这是我个人的观点,你的例子没有区别。