直接在对象上是不可能的。
如果您需要这样做,我建议您实现Countable接口,然后调用而不是empty($foo)调用count($foo) == 0...
但是,对于属性,可以使用两种魔术方法的组合:__isset和__get. 例如:
class Foo {
protected $bar = false;
protected $baz = true;
public function __get($key) {
return $this->$key;
}
public function __isset($key) {
return isset($this->$key);
}
}
这导致:
empty($foo->abc); // true, isset returns false
empty($foo->bar); // true, isset returns true, but get returns false value
empty($foo->baz); // false, isset returns true, and get returns a true value
所以不,使用单个方法处理程序是不可能的,但是结合两种魔术方法,它可以正常工作......