Php 尝试不使用静态方法访问超类MY_模型
我正在尝试用Codeigniter构建一个“多客户端”web应用程序。但是现在我无法使用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
$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目录中了吧?