$user = new User(1);
var_dump($user->ID);
if (empty($user->ID))
echo "empty";
// output string(2) "77" empty
Run Code Online (Sandbox Code Playgroud)
那么为什么true即使$uservar不为空,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;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
所以我更新了我的User类并添加了__isset()方法
public function __isset($name) {
if (isset($this->data[$name]) && !empty($this->data[$name]))
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
这引出了另一个问题:当调用empty()我的非空var时empty($user->ID),它将返回false,但是当使用isset($user->ID)声明的var为空时(例如$user->ID = '')它也将返回false,因为它isset()会调用__isset()类内部,对吧?
有没有办法解决这个问题?PHP注意到,我应该将重载的属性复制到局部变量中,这对我来说似乎太多文书工作;)
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |