Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在构造函数中初始化数组和在PHP声明中初始化数组有什么区别?_Php - Fatal编程技术网

什么';在构造函数中初始化数组和在PHP声明中初始化数组有什么区别?

什么';在构造函数中初始化数组和在PHP声明中初始化数组有什么区别?,php,Php,或 有什么区别?哪一个更好?从所有意图和目的来看,除了明显的语法差异之外,没有实际的区别。数组的行为将是相同的,依赖于它的所有代码也将是相同的 如果您想进入边缘情况,那么如果您在实例化对象时从未运行过构造函数,您会看到一个不同之处(例如,如果您扩展并重写构造函数而不调用父对象::\u construct)。在第一种情况下,$myVar将是null,这可能会与代码发生冲突,这取决于它是一个数组 我建议在声明属性时始终进行初始化,因为它的代码更少,变量的意图更明显,并且可以避免上述奇怪的边缘情况。对


有什么区别?哪一个更好?

从所有意图和目的来看,除了明显的语法差异之外,没有实际的区别。数组的行为将是相同的,依赖于它的所有代码也将是相同的

如果您想进入边缘情况,那么如果您在实例化对象时从未运行过构造函数,您会看到一个不同之处(例如,如果您
扩展
并重写构造函数而不调用
父对象::\u construct
)。在第一种情况下,
$myVar
将是
null
,这可能会与代码发生冲突,这取决于它是一个数组


我建议在声明属性时始终进行初始化,因为它的代码更少,变量的意图更明显,并且可以避免上述奇怪的边缘情况。

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

如果您想进入边缘情况,那么如果您在实例化对象时从未运行过构造函数,您会看到一个不同之处(例如,如果您
扩展
并重写构造函数而不调用
父对象::\u construct
)。在第一种情况下,
$myVar
将是
null
,这可能会与代码发生冲突,这取决于它是一个数组


我建议在声明属性时始终进行初始化,因为它的代码更少,变量的意图更明显,并且可以避免上述奇怪的边缘情况。

好吧,没有性能差异,但我建议在声明类变量时这样做,因为这样可以在不必阅读整个代码的情况下了解变量的属性和访问修饰符

好吧,没有性能差异,但我建议在声明类变量时这样做,因为它将提供变量属性和访问修饰符的概念,而无需阅读整个代码

在这里,您没有初始化任何内容,只是键入了变量。
初始化attribute中的变量可以让您很好地了解属性类型,并根据业务逻辑设置自定义默认值,而不是PHP

就性能而言,这是我个人的观点,在您的示例中没有区别。

这里,您没有初始化任何东西,只是键入了变量。
初始化attribute中的变量可以让您很好地了解属性类型,并根据业务逻辑设置自定义默认值,而不是PHP
就表现而言,这是我个人的观点,你的例子没有什么不同

class X
{
    private $myVar;

    function __constructor()
    {
        this->myVar = array();
    }
}
class X
{
    private $myVar = array();

    function __constructor()
    {
    }
}