php – isset的奇怪行为
作者:互联网
php 5.3中的isset()似乎表现得出乎意料.我有一个名为DB details的类,它使用getter和setter封装了一堆字符串属性.
$dbdetails-> getDatabasename()求值为字符串(“mydb”)
这会引发500错误:
if(!isset($dbdetails->getDatabasename())){
//do something
}
这很好用
$databasename = $dbdetails->getDatabasename();
if(!isset($databasename)){
//do something
}
我无法看到任何日志输出,因为即使将错误ini param设置为(打开),apache也会发送回500.我知道这肯定与isset调用有关.
知道什么可能是错的,或者我发现了PHP错误?
解决方法:
isset函数检查是否设置了变量.检查$databasename是有效的,因为它是一个可以设置的变量.检查函数是无效的,因为它不是变量.
在检查函数的直接结果时,您可能希望使用is_null($value).
来自is_null文档的评论的一个例子:
<?php
function test( ) { return null; }
var_dump( is_null( test( ) ) ); // displays "true"
var_dump( isset( test( ) ) ); // parse error, because "test()" is not a variable
?>
标签:php,php-5-3 来源: https://codeday.me/bug/20190716/1480868.html