【问题标题】:Trying to access superclass MY_MODEL without static approach试图在没有静态方法的情况下访问超类 MY_MODEL
【发布时间】:2017-09-09 12:47:08
【问题描述】:

我正在尝试使用 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 的模拟,继承立即生效。是codeigniter的问题吗?

【问题讨论】:

  • 我自己的解决方案:使用会话函数似乎是合理的,但仍然不明白为什么继承不起作用。
  • 这确实应该有效。我在我的情况下对此进行了测试,它确实可以正常工作。我认为您将 MY_MODEL.php 放在 application/core 目录中?

标签: php codeigniter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多