$user = new User(1);
var_dump($user->ID);
if (empty($user->ID))
echo "empty";
// output string(2) "77" empty
那么,即使true
var不为空,为什么empty()返回$user
呢?
我的用户类的相关部分:
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;
}
这引出了另一个问题:
在我的非空var empty()
上调用empty($user->ID)
时,它将返回false,但在声明的var为空时使用isset($user->ID)
(例如$user->ID = ''
)时,它也会返回false ,因为isset()
会在课堂内调用__isset()
,对吗?
有没有办法解决这个问题? PHP注意到,我应该将重载的属性复制到一个局部变量中,这对我来说似乎太多文书工作了;)