【发布时间】:2016-04-20 18:37:58
【问题描述】:
这很好用
<?php
error_reporting(E_ALL);
$a = null;
var_dump($a); // outputs no notice and NULL
但这会产生一个通知?
<?php
error_reporting(E_ALL);
$a;
var_dump($a); // outputs a notice followed by NULL
这行得通
<?php
error_reporting(E_ALL);
class some_class
{
private $a;
public static $b;
public function __construct()
{
echo var_dump($this->a); // outputs NULL
}
}
var_dump(some_class::$b); // outputs NULL
new some_class();
【问题讨论】:
-
您的问题是什么?
$a;不是有效的分配。 -
在第二个示例中,您没有将
$a设置为null,但是当您尝试访问未定义的变量时,它是默认显示。 -
@mistermartin 我想我会希望在声明
$a;而不是尝试在var_dump($a);访问它时出现通知? -
@MonkeyZeus 我对我之前发布的答案进行了一些编辑,概述了正在发生的事情,但不确定您是否确实看到了它们(编辑)。我希望它对这个主题有所启发;-)(另请参见代码中的 cmets)。
-
@Fred-ii- 感谢您的详细回答。我想我的问题是我理解这种行为,但我只是不明白为什么独立的
$a;没有产生通知。请看我的更新。这是否意味着 PHP 在编译时会将未分配的类属性初始化为 NULL?