empty()返回错误的结果

Chr*_*ris 4 php

$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注意到,我应该将重载的属性复制到局部变量中,这对我来说似乎太多文书工作;)

Rob*_*Rob 9

empty()不打电话__get().你需要实施__isset().