Php 如何在子控制器类中加载模型&;在父类中使用?

Php 如何在子控制器类中加载模型&;在父类中使用?,php,codeigniter,controller,codeigniter-2,Php,Codeigniter,Controller,Codeigniter 2,我正在尝试组织我的控制器和模型,并将公共代码移动到父类。我已经成功地组织了我的模型,但现在却一直在组织控制器 我的父控制器是: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Controller extends CI_Controller { protected $model; public function __construct(){

我正在尝试组织我的控制器和模型,并将公共代码移动到父类。我已经成功地组织了我的模型,但现在却一直在组织控制器

我的父控制器是:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
    protected $model;

     public function __construct(){
      parent::__construct();

    }

public function getDataByCity(){
    echo(json_encode($this->model->getDataByCity()));
}

}?>

我的孩子控制器是这样的:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Hospital extends MY_Controller {

public function __construct(){
        parent::__construct();
      $this->load->model('hospital_model'); 
      //how do I load this into the Parent's $model variable?
    }
}
}?>
MY_控制器中的

...
public function set_model($object)
{
    $this->model = $object;
}
...
class MY_Controller extends CI_Controller {
    public $model;

     public function __construct(){
      parent::__construct();

    }

public function getDataByCity(){
    echo(json_encode($this->model->getDataByCity()));
}

}
class Hospital extends MY_Controller {

public function __construct(){
        parent::__construct();
      $this->load->model('hospital_model', 'model'); 
    }
}
class MY_Controller extends CI_Controller {
    protected $model;

    public function __construct()
    {
        parent::__construct();
    }

    public function set_model($object)
    {
        $this->model = $object;
        $this->load->model($this->model);
    }

    public function getDataByCity(){
        echo(json_encode($this->model->getDataByCity()));
    }

}
住院:

...
public function __construct(){
    parent::__construct();
  $this->load->model('hospital_model'); 
  parent::set_model($this->hospital_model);
}
class Hospital extends MY_Controller {

    public function __construct(){
        parent::__construct();
        parent::set_model('hospital_model'); 
    }
}

您可以使用第二个参数将模型指定给不同的对象名称。但是,
$model
属性应该是
public

父控制器:

...
public function set_model($object)
{
    $this->model = $object;
}
...
class MY_Controller extends CI_Controller {
    public $model;

     public function __construct(){
      parent::__construct();

    }

public function getDataByCity(){
    echo(json_encode($this->model->getDataByCity()));
}

}
class Hospital extends MY_Controller {

public function __construct(){
        parent::__construct();
      $this->load->model('hospital_model', 'model'); 
    }
}
class MY_Controller extends CI_Controller {
    protected $model;

    public function __construct()
    {
        parent::__construct();
    }

    public function set_model($object)
    {
        $this->model = $object;
        $this->load->model($this->model);
    }

    public function getDataByCity(){
        echo(json_encode($this->model->getDataByCity()));
    }

}
子控制器:

...
public function set_model($object)
{
    $this->model = $object;
}
...
class MY_Controller extends CI_Controller {
    public $model;

     public function __construct(){
      parent::__construct();

    }

public function getDataByCity(){
    echo(json_encode($this->model->getDataByCity()));
}

}
class Hospital extends MY_Controller {

public function __construct(){
        parent::__construct();
      $this->load->model('hospital_model', 'model'); 
    }
}
class MY_Controller extends CI_Controller {
    protected $model;

    public function __construct()
    {
        parent::__construct();
    }

    public function set_model($object)
    {
        $this->model = $object;
        $this->load->model($this->model);
    }

    public function getDataByCity(){
        echo(json_encode($this->model->getDataByCity()));
    }

}
在MY_控制器中:

...
public function set_model($object)
{
    $this->model = $object;
}
...
class MY_Controller extends CI_Controller {
    public $model;

     public function __construct(){
      parent::__construct();

    }

public function getDataByCity(){
    echo(json_encode($this->model->getDataByCity()));
}

}
class Hospital extends MY_Controller {

public function __construct(){
        parent::__construct();
      $this->load->model('hospital_model', 'model'); 
    }
}
class MY_Controller extends CI_Controller {
    protected $model;

    public function __construct()
    {
        parent::__construct();
    }

    public function set_model($object)
    {
        $this->model = $object;
        $this->load->model($this->model);
    }

    public function getDataByCity(){
        echo(json_encode($this->model->getDataByCity()));
    }

}
住院:

...
public function __construct(){
    parent::__construct();
  $this->load->model('hospital_model'); 
  parent::set_model($this->hospital_model);
}
class Hospital extends MY_Controller {

    public function __construct(){
        parent::__construct();
        parent::set_model('hospital_model'); 
    }
}

试试这个::)我认为这并不能解决我的问题,因为模型是由Codeignitor加载的,并且有一个使用该名称生成的变量。尝试指定第二个参数,将模型分配给另一个对象名
$this->load->model('hospital_model','model')我得到两个错误:使用未定义的常量模型-假定的“模型”&您正在加载的模型名称是已经使用的资源的名称:模型确保
$model
属性为
null
。我得到以下错误:消息:未定义属性:医院:$Hospital\u模型