CI 变量名与控制器名一样 怎么处理

core/ MY_Controller.php

class MY_Controller extends CI_Controller {

    protected $user;
}

controllers/User.php

class User extends MY_Controller {
    
    public function index() {
        
        var_dump($this->user); //null
    }
}

CI 里面这个怎么破,有没有什么标识?

阅读 3.2k
3 个回答

$this->user 是调用 MY_Controller 中的 $user 属性,跟你的 User Controller 没有一毛钱关系!

这样写有什么问题吗?如果有,请详细说明你的问题,不要含糊不清!

这应该是不会冲突的,你有什么具体问题可以说说。

这并不是和类名相同的问题。你的问题在于

class MY_Controller extends CI_Controller {
    protected $user;
}

这里声明了$user值,但是没有初始化值,之后也没有任何给这个user值赋值的语句,所以默认是NULL
然后,这里

class User extends MY_Controller {
    public function index() {
        var_dump($this->user); //null
    }
}

UserMY_Controller继承了$user,但是依旧没有进行初始化或者赋值,所以依旧是默认值NULL,所以你打出来的$user->user必然是NULL

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题