$user = new User(1);
var_dump($user->ID);
if (empty($user->ID))
echo "empty";
// output string(2) "77" empty
那么为什么true
即使$user
var 不为空,empty() 也会返回呢?
我的用户类的相关部分:
class User {
protected $data = null;
public function __construct($userID) {
// sql select
$this->data = $sqlResult;
}
// ...
public function __get($name) {
if (isset($this->data[$name]))
return $this->data[$name];
else
return null;
}
}
更新:
所以我更新了我的 User 类并添加了 __isset() 方法
public function __isset($name) {
if (isset($this->data[$name]) && !empty($this->data[$name]))
return true;
else
return false;
}
这导致我遇到另一个问题:当调用empty()
我的非空 varempty($user->ID)
时,它会返回 false,但是当使用isset($user->ID)
声明为空的 var(例如$user->ID = ''
)时,它也会返回 false,因为isset()
会__isset()
在类内部调用,对吗?
有没有办法解决这种行为?PHP 指出,我应该将重载的属性复制到一个局部变量中,这对我来说似乎是太多的文书工作;)