$user = new User(1);
var_dump($user->ID);
if (empty($user->ID))
echo "empty";
// output string(2) "77" empty
那么为什么empty()返回true
即使当$user
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;
}
}
UPDATE:
所以我更新了我的用户类,并增加了__isset()方法
public function __isset($name) {
if (isset($this->data[$name]) && !empty($this->data[$name]))
return true;
else
return false;
}
这使我到另一个问题: 当我在我的非空var empty($user->ID)
上致电empty()
它将r eturn错误,但在使用isset($user->ID)
时,声明的变量为空(例如, $user->ID = ''
)它也会返回false,因为isset()
会在类里面调用__isset()
,对吧?
有没有办法解决这个问题? PHP的笔记,我应该重载的属性复制到一个局部变量,这似乎太多的文书工作对我来说)
答案就在这里:http://stackoverflow.com/questions/6241039/php-empty-doesnt-work-with-a -getter-method – graup 2013-04-04 14:23:17
它正在评估'User'类中是否存在'ID'。这是区分大小写 – karthikr 2013-04-04 14:23:44
谢谢你,那应该解决我的问题。 – Chris 2013-04-04 14:28:48