折雨的天空

博客介绍:本博客当前共有文章【968】篇,总阅读量【5,176,991】次,第一篇博客发表于【2011年04月06日 10时34分】,距今已【4990】天,感谢您的使用!

您的位置:折雨的天空 >php开发> php中empty判定一个类成员变量的问题

php中empty判定一个类成员变量的问题

如图:

QQ图片20160503174505.png


上图的判定,empty会返回true。但是实际上是有值的。


源码:

QQ图片20160503174719.png


结果:

QQ图片20160503174724.png


这里有几点要说,这个$individual_session是一个动态的类。来自于zend的session类,可以参考,但是重写了。


源码为:



class Zend_Session_Namespace
{
    private $parent_obj;
    private $session_key;
    public function __construct($params='')
    {
        $this->parent_obj=isset($_SESSION[$params])?(object)$_SESSION[$params]:new stdClass();
        $this->session_key=$params;
    }
    public function __get($name)
    {
        // TODO: Implement __get() method.
        if(isset($this->parent_obj->$name))
        {
            return($this->parent_obj->$name);
        }
        else
        {
            return(NULL);
        }
    }
    public function __set($name, $value)
    {
        // TODO: Implement __set() method.
        $this->parent_obj->$name = $value;
        $_SESSION[$this->session_key][$name]=$value;
    }
    //这个是后来加上的,加上这个,结果才对
    public function __isset($name)
    {
        return isset($this->parent_obj->$name);
    }
}


重点就在这个__isset里了。


empty在手册中有这样一个说明:



Note:

当对一个不可见的对象属性使用 empty() 时, __isset() 方法如果存在的话,它将会被调用。 


之前就是没有写__isset这个魔术方法导致的。具体情况,可能新手还是看不懂,反正问题解决了就行了。




魔术方法的使用参考:


http://www.kancloud.cn/webxyl/php_oop/68883

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《php中empty判定一个类成员变量的问题

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换