为什么我需要使用parent :: __ construct();构造函数,它需要什么?
// CONTROLLER
class users_ctrl extends CI_Controller {
function __construct() {
parent::__construct(); //Why do I need to include it?
$this->load->model('select_model');
}
public function index()
{
$data['user_list'] = $this->select_model->get_all_users();
$this->load->view('show_users', $data);
}
}
// MODEL
class select_model extends CI_Model{
function __construct() {
parent::__construct();
}
function get_all_users()
{
$query = $this->db->get('students');
return $query->result();
}
}
答案 0 :(得分:0)
在给定的示例中,您将调用基本控制器类加载的load
类。如果没有父的构造函数,则必须自己加载它的实例。
对于您的模型,您必须手动加载db对象。
删除它,您应该得到类似called to undefined propery $class::load
答案 1 :(得分:0)
如果你创建一个扩展另一个的类,并在子类中声明一个新的构造函数,那么父构造函数将永远不会运行 - 因为你已经覆盖它,并且因为CodeIgniter基本控制器(很可能)很多幕后的事情,如果你不运行父构造函数,你的控制器很可能不会被注入CI的容器中。