2016-05-25 54 views
0

我知道PHP将未定义的变量视为null。但是,尽管如此,当我想使用一个未定义的变量时,它会抛出一个E_NOTICE错误,指出该变量未定义。为了防止这种情况,我应该将此E_NOTICE手动设置变量手动设置为空吗?是否有必要在PHP中手动声明空变量?

例如:

class Myclass{ 

private $var1; 
private $var2; 

public function __construct($settings){ 
    $allowedKeys = array("var1","var2"); 
    foreach($allowedKeys as $key => $value){ 
    if(!isset($settings[$value])){ 
    $settings[$value] = null; 
    } 
} 

$this->var1 = $settings['var1']; 
$this->var2 = $settings['var2']; 

} 
} 
+2

我不完全明白你在问什么。你可以显示你在哪里使用这个,并抛出错误?在使用它来防止这个错误之前,你不能仅仅检查变量'isset()'吗? –

+0

只需检查您的变量范围。除非你特别需要他们是私人的,请尝试使用公共。 http://php.net/manual/en/language.oop5.visibility.php – Impulss

回答

0

你有四个选项,以防止E_NOTICE:

之一是设置变量为null,字符串,整数使用变量之前。 I.e .:

$variable = null; 
$variable = ''; 
$variable = 0; 
$variable = []; 

... 

if(empty($variable)) { 
    // do something with this situation 
} 

另一个是检查变量是否存在。就像你在一行所做的:

if(isset($variable)){ 
    ... 
} 

第三个是在你的素文字关闭E_NOTICE:

error_reporting(E_ALL & ~E_NOTICE); 

第四一种是在你的php.ini文件中关闭这个功能(虽然我不会推荐这个):

error_reporting = E_ALL & ~E_NOTICE // you must find this line in your php.ini 
相关问题