我花了最后 20 分钟试图找出这个问题的原因。
首先我会做的
$this->is_csu = TRUE;
在我调用isset的单独类中,isset返回FALSE,如果我立即回显变量,它将返回TRUE。
echo var_dump(isset($this->is_csu));
echo var_dump($this->is_csu);
die();
结果输出为
bool(false) bool(true)
我确信发生这种情况有一些技术原因,但现在超出了我的范围。
希望有人能对此有所了解。
您可能使用私有成员扩展类。
请参阅 PHP 示例,了解如何处理此问题。
我获得输出的唯一方法是在类上使用 PHP 魔术方法,例如:
class A
{
public function __isset($n)
{
$this->$n = TRUE;
}
}
$bar = new A();
var_dump(isset($bar->foo));
var_dump($bar->foo);
输出:
bool(false)
bool(true)
虽然我想你已经知道你是否正在使用其中之一。
我知道这是一个非常古老的问题,但它也发生在我身上,我不知道为什么。
原因是最终这是一个私有或受保护的成员,所以虽然你可以得到它的值,但isset返回false。
var_dump是有问题的,因为它正在做反思。