我已经通过创建一个放在application / core目录中的MY_Controller.php成功扩展了CI_Controller类.
core / My_Controller.php看起来像这样:
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
}
然后,当我创建普通控制器时,它们看起来像这样:
class Home extends MY_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('home');
}
}
我正在创建一个管理员后端,我希望为控制器提供一个不同的基类而不是My_Controller.这是我可以有管理员控制器的常用方法(即authentication_check等)
我无法解决的是如何创建另一个扩展CI_Controller的控制器.
目标是管理员控制器扩展与前端控制器不同的基类.
管理基础控制器看起来像这样:
class MY_Admin_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
}
管理页面的普通控制器:
class Admin_home extends MY_Admin_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('admin_home');
}
}
问题是要扩展CI_Controller类,必须将控制器文件命名为PREFIX_Controller.php并将其放在core /目录中.但我想要两个控制器类,它们不能具有相同的文件名.
解决方法:
你只需将它们放在同一个文件中,我就有一个与此完全相同的项目.
我们在MY_Controller.php文件中只有admin和普通的扩展控制器,工作正常.
MY_Controller或其他扩展文件的主要原因是,当您加载基本文件(无论是库,帮助程序等)时,CodeIgniter会自动启动它们,您可以在这些文件中包含许多类.
编辑:
你甚至不需要调用它们MY_Admin_Controller或MY_Controller,我们在MY_Controller文件中有Admin_Controller和User_Controller以及Ajax_Controller
标签:php,codeigniter,extending-classes
来源: https://codeday.me/bug/20190928/1827558.html