2010-04-27 41 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