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模型