YiiHoney 2011-10-19 11:58:00 3741次浏览 4条回复 0 0 0

各位朋友大家好,问个yii对象内存何时释放的问题:如有个类SecurityUser.php,类中有个方法sendPasswordEmail【发送密码邮件方法】,我在controller中要用这个方法,我的操作是: SecurityUser::model()->sendPasswordEmail(); 这时就相当于实例了SecurityUser.php这个类,即产生了对象,那么这个对象何时被销毁从而释放内存空间呢???

  • 回复于 2011-10-22 00:02 举报

    SecurityUser::model()
    没超出范围,还是php的内容
    这样写是把生成的 object放到了SecurityUser类中作为静态成员变量,
    不管你调用多少次SecurityUser::model()
    返回的始终是同一个对象
    这个对象是永远存在的,除非你写一个相反的静态函数去destroy这个静态成员变量
    看CActiveRecord类的model函数就清楚了

    public static function model($className=__CLASS__)
    {
        if(isset(self::$_models[$className]))
            return self::$_models[$className];
        else
        {
            $model=self::$_models[$className]=new $className(null);
            $model->_md=new CActiveRecordMetaData($model);
            $model->attachBehaviors($model->behaviors());
            return $model;
        }
    }
    
  • 回复于 2011-10-21 13:39 举报

    我这个问题问得有点超出范围了哦。这个东东,应该和系统与内存管理之间的关系了。。。。

  • 回复于 2011-10-21 13:02 举报

    应该是执行这个方法之后,就可以自动销毁吧!不然程序也不会继续往下面执行的。

  • 回复于 2011-10-19 11:59 举报

    补充:SecurityUser.php是在model层的。

您需要登录后才可以回复。登录 | 立即注册