villers 2020-09-04 02:29:07 2136次浏览 1条回复 0 0 0
'bootstrap' => [
    'core_goods',
]
'modules'=>[
    'core_goods' =>[
        'class' => 'goods\Goods'
    ]
]

设置了引导启动 每次请求模块对象也会重新创建init函数被调用。

public function init(){
    parent::init();
    // ... 应用配置后进行初始化
    $this->session = Yii::$app->session;
    // 开启session
    $this->session->open();
    $this->session['num'] = 1;
}

public function add(){
    $this->session['num'] = $this->session['num'] + 1;
    return $this->session['num'];
}

每次请求执行 add,结果都是2。。。 这不正常吧,我刚从 Java 转 PHP。不太懂,请多多指教。

  • 回复于 2020-09-04 10:01 举报

    的确是每次请求所有对象都会重新创建,请求结束对象销毁,java和php机制不一样

    2 条回复
    回复于 2020-09-04 13:24 回复

    如果是这样的话

    public function __set($name, $value){
        if ( !empty($name) && $name == 'services'){
            if (!isset ($this->_service) ){
                $this->_service = Yii::createObject([
                    'class' => 'core\common\basis\Service',
                    'childService' =>$value]);
            }
        }else{
    
        }
        return null;
    }
    

    if (!isset ($this->_service)) 就没什么意义了。
    模块每次都重建 属于复位?

    回复于 2020-09-07 09:52 回复

    是的,新来一个请求新创建一次,同一个请求内不会重复创建

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