Php 尝试不使用静态方法访问超类MY_模型

Php 尝试不使用静态方法访问超类MY_模型,php,codeigniter,Php,Codeigniter,我正在尝试用Codeigniter构建一个“多客户端”web应用程序。但是现在我无法使用$this->变量从其他模型访问我的_模型。我必须用一个静态的。这是个问题吗 MY_Controller.php class MY_Controller extends CI_Controller { protected $data = array(); public function __construct($name = null) { parent::__construct(); $this->l

我正在尝试用Codeigniter构建一个“多客户端”web应用程序。但是现在我无法使用
$this->
变量从其他模型访问我的_模型。我必须用一个静态的。这是个问题吗

MY_Controller.php

class MY_Controller extends CI_Controller {
protected $data = array();
public function __construct($name = null) {
parent::__construct();
$this->load->model('my_model');
$this->data['mandant']['clientID'] = $session_data['clientID'];
$this->my_model->set_session($this->data['mandant']);
MY_Model.php

class MY_Model extends CI_Model {
protected static $works = array();
public $worksnot = array();

public function __construct() {
    parent::__construct();
}
public function set_session($value) {
    self::$works = $value;
    $this->worksnot = $value;
}
Tasks\u model.php

class Tasks_model extends MY_Model {
    public function __construct() {
        parent::__construct();
    }
    public function getAll() {
        print_r(parent::$works);
        print_r($this->worksnot);
这两种方法都有效吗?哪个更好


我在没有codeigniter的情况下做了一个模拟,继承立即生效。这是codeigniter问题吗?

它按预期工作,只需要使用相同的对象。设置变量,然后尝试从其他对象访问它(这就是为什么它是空的)。所以你需要这样做:

$this->load->model('Tasks_model');
$this->Tasks_model->set_session('444');
$this->Tasks_model->getAll();

我自己的解决方案:使用会话函数似乎是合理的,但仍然不明白为什么继承不起作用。这确实应该起作用。我在我的情况下测试了这个,它确实正常工作。我想你把MY_MODEL.php放在application/core目录中了吧?