我花了最后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)
我确信有一些技术原因可以解释为什么会发生这种情况,但现在它已超出我的范围。
希望有人可以对此有所了解。
答案 0 :(得分:2)
你可能会扩展一个私人会员的课程。
请参阅PHP Examples了解如何处理此事。
我获得输出的唯一方法是在类上使用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)
虽然我认为你已经知道你是否正在使用其中一种。
答案 1 :(得分:0)
我知道这是一个非常古老的问题,但它也发生在我身上,我无法弄清楚原因。
原因是最终这是一个私有或受保护的成员,所以尽管你可以得到它的值,但是isset返回false。
var_dump是有问题的,因为它正在进行反射。