Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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自动为您执行此操作,是否需要将类内的属性初始化为null?_Php - Fatal编程技术网

如果php自动为您执行此操作,是否需要将类内的属性初始化为null?

如果php自动为您执行此操作,是否需要将类内的属性初始化为null?,php,Php,对来自这两个类中任何一个的对象执行var_转储都会得到相同的结果 Class Node{ public $parent = null; public $right = null; public $left = null; function __construct($data){ $this->data = $data; } } Class Node{ public $p

对来自这两个类中任何一个的对象执行var_转储都会得到相同的结果

Class Node{
    public $parent = null;
    public $right = null;
    public $left = null;        
    function __construct($data){
        $this->data = $data;                    
    }
}

Class Node{
    public $parent;
    public $right;
    public $left;        
    function __construct($data){
        $this->data = $data;                    
    }
}
比如说

$a = new Node(2);
var_dump($a);
为上述任一类返回以下内容

object(Node)#1 (4) {
  ["parent"]=>
  NULL
  ["right"]=>
  NULL
  ["left"]=>
  NULL
  ["data"]=>
  int(2)
}
对于变量来说,情况似乎并非如此

$b;
var_dump($b);
如果您希望属性的值为
null
,那么是否需要显式编写该值,因为php似乎会自动为您编写该值


也根据这个答案,如果尝试获取未初始化变量的值,C++给出了未定义的行为。C++是否自动将类中的属性值设置为<代码> null >代码> PHP的方式,如果属性未初始化为值?

不,不需要将它们初始化为<代码> null <代码> -PHP自动完成,并且自己做这件事不会产生任何可观察的差异。


C++没有设置类字段的值为<代码> null < /> >(实际上C++中没有“实际”<代码> null < /Cult>值,除非您在C++ 11中计数);它零初始化或值初始化它们,这是不同的。您可以阅读有关零和值初始化的内容。

不,在PHP中没有未定义的内容,因此如果不使用null初始化,也一样。有些人习惯于使用其他编程语言编写,或者只是为了确保这一点,但这并没有什么区别


C++是非常不同的,但我没有足够的知识给你一个答案

保存自己的击键;不需要将属性的初始值设置为null。在PHP内部AFAIK中,如果没有显式设置属性,则属性已经被分配为null;你的var_dump证明了这一点。在PHP中,类属性被认为与原始变量不同,因此var_转储结果也不同


然而,这样做似乎没有什么坏处。我曾经在我的条令实体类中将它们设置为null,在实体生命周期的任何阶段都没有区别。

Downvoter:请留下评论,帮助我改进这个答案。谢谢