尝试在没有静态方法的情况下访问超类MY_MODEL

时间:2017-09-09 12:47:09

标签: php codeigniter

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

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_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的模拟,继承工作immediatley。这是一个codeigniter问题吗?

1 个答案:

答案 0 :(得分:0)

它按预期方式工作,只需要使用同一对象即可。您设置变量,然后尝试从其他对象访问它(这就是为什么它为空)。因此,您需要这样做:

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