编程语言
首页 > 编程语言> > php – isset的奇怪行为

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: is_null
> PHP: isset

标签:php,php-5-3
来源: https://codeday.me/bug/20190716/1480868.html