$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