启用E_NOTICE
错误消息后,PHP不喜欢以下代码,除非已经定义了变量$mdDialog
和$mdToast
:
if ($mdDialog || $mdToast) {
$ngMaterial = true;
}
为避免出现E_NOTICE
错误,我必须写:
if (isset($mdDialog) || isset($mdToast)) {
$ngMaterial = true;
}
问题在于,使用上述代码,如果我在前面的某个地方有$mdDialog = false;
行,该语句将是真实的,这不是主意。为了避免这种情况,我必须写:
if ((isset($mdDialog) && $mdDialog) || (isset($mdToast) && $mdToast)) {
$ngMaterial = true;
}
这太长了,而且感觉过度,只是为了避免出现E_NOTICE消息。
因此,问题是,我应该关心这些E_NOTICE
消息吗?检查可能不存在的变量的值有什么不好的地方吗?
答案 0 :(得分:4)
empty
在这种情况下可能很有用。如下所示:
if (!empty($mdDialog) || !empty($mdToast)) {
$ngMaterial = true;
}
详细了解empty。
答案 1 :(得分:1)
或者,如果变量是一个字符串,您也可以使用它:
if(strlen($mdDialog) < 1 || strlen($mdToast) < 1){
$ngMaterial = true;
}
答案 2 :(得分:0)
与设置error_reporting()
忽略它们相比,最好避免生成通知。就是说,在这种情况下,要确保在开始时设置了变量,通常要比检查它们是否在您引用的每个位置都设置要容易得多。也就是说,如果您执行以下操作,则永远不会将var设置为错误条件:
if (some condition) {
$flag = true;
}
相反,请执行以下操作:
if (some condition) {
$flag = true;
} else {
$flag = false;
}
或者这个:
$flag = false;
if (some condition) {
$flag = true;
}
或者这个:
$flag = (some condition) ? true : false;
或者这个:
$flag = (bool) (some condition);
现在您不需要isset()
或empty()
,当您获得E_NOTICE
时,它实际上是有意义的。