2010-04-27 18 views
1

也許我問一個愚蠢的問題,但我無法理解這種行爲:空()行爲

<?php 
    $this->meeting->google_id = 'test'; 
    $test = $this->meeting->google_id; 
    var_dump(empty($test)); 
    var_dump(empty($this->meeting)); 
    var_dump(empty($this->meeting->google_id)); 
?> 

給輸出:

bool(false) bool(false) bool(true) 

爲什麼的empty($this->meeting->google_id);結果爲真?那麼我應該如何檢查這個屬性呢?

回答

3

這裏閱讀:http://www.php.net/manual/en/function.empty.php#93117

基本上,PHP magic methods導致意外的行爲。

如果班級有一個特殊的__get魔法,您可以讀取/寫入班級中的虛擬成員。但是,實際值的值不能由__isset魔法(這是empty使用的值)檢查,因爲它不是該類的顯式成員。

+1

如果你沒有完成閱讀(有些人傾向於不這樣做):你總是可以編寫自己的'__isset'方法,這是該文章最有禮貌地提供的方法。 :) – animuson 2010-04-27 07:48:20

+0

提及__isset魔法的方法+1 ...顯然,我從來沒有讀過__get,__set和__call ;-)的魔法方法頁面 – richsage 2010-04-27 07:50:01