Php 如何在codeigniter框架上的主控制器中加载模型?
我正在创建一个主控制器,以便我的应用程序上的每个其他控制器都扩展主控制器(my_控制器)。 我的问题是如何使加载模型更抽象,让我向您展示代码以更好地解释Php 如何在codeigniter框架上的主控制器中加载模型?,php,codeigniter,Php,Codeigniter,我正在创建一个主控制器,以便我的应用程序上的每个其他控制器都扩展主控制器(my_控制器)。 我的问题是如何使加载模型更抽象,让我向您展示代码以更好地解释 class MY_Controller extends CI_Controller { protected $model; function __construct() { parent::__construct(); } function get($order_by) {
class MY_Controller extends CI_Controller
{
protected $model;
function __construct()
{
parent::__construct();
}
function get($order_by)
{
$this->load->model($this->model);
$query = $this->$this->model->get($order_by);
return $query;
}
}
我在主控制器中声明一个受保护的变量$model
,以便在扩展控制器上为其赋值:
class Home extends MY_Controller {
public function __construct() {
parent::__construct();
$this->model = "home_model";
}
public function index()
{
$test = $this->get('id');
}
}
问题是,在我的_控制器上,我无法加载模型
$this->$this->model->get()
我收到以下错误:消息:无法将类Home的对象转换为字符串
任何帮助都将不胜感激,谢谢 您的问题是
$this->$this->model->get()
。如果要在这样的链中使用对象属性($this->model
),则需要将其用大括号括起来:$this->{$this->model}->get()
为什么不将分配给受保护全局$model
变量的值保存在函数内的变量中呢
class MY_Controller extends CI_Controller{
protected $model;
function __construct(){
parent::__construct();
}
function get($order_by){
$_model = $this->model // I added this line.
$this->load->model($_model); // I modified this line.
$query = $this->$_model->get($order_by); // I modified this line.
return $query;
}
}
控制器不能用作模型