0

我花了最后 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)

我确信为什么会发生这种情况有一些技术原因,但它现在超出了我的范围。

希望有人可以对此有所了解。

4

2 回答 2

2

您可能使用私人成员扩展了一个类。

请参阅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)

尽管我认为您已经知道您是否正在使用其中之一。

于 2012-05-11T14:04:03.627 回答
0

我知道这是一个非常古老的问题,但我也想到了它,我不知道为什么。

最终原因是这是一个私有或受保护的成员,所以虽然你可以得到它的值,但 isset 返回了 false。

var_dump 是有问题的,因为它正在做反射。

于 2018-02-16T23:24:39.727 回答