0

我知道你可以做到这一点

class Object
{
    private $ar;

    public function __isset($name)
    {
        return isset($this->ar[$name]);
    }
}

然后可以用来执行以下操作

$obj = new Object();
if (isset($obj->name)) { /* ... */ }

但是有没有办法做到这一点

$obj = new Object();
if (isset($obj)) { /* .... */ }

$obj我可以在它自己的对象上使用__isset()魔术方法来控制状态的返回。

4

3 回答 3

2

你只能定义一个新的全局函数myIsset()或类似的东西来做到这一点。

function myIsset($obj = NULL)
{
    ...
}

$obj使用PHP检查变量时,isset根本不会与变量可能引用的对象交互。

于 2011-10-14T12:25:47.083 回答
2

你不能,因为它没有任何意义(至少不是以这种方式isset()被使用)。只要isset($obj)它指向某个对象而不是 NULL/未定义,它总是正确的。

于 2011-10-14T12:30:44.360 回答
0

魔术方法__isset不打算以这种方式使用。

根据PHP 手册

“__isset() 是通过在不可访问的属性上调用 isset() 或 empty() 来触发的。”

于 2011-10-14T12:39:20.757 回答