Cam*_*oft 27 php codeigniter extending-classes
我已经通过创建一个放在application/core目录中的MY_Controller.php成功扩展了CI_Controller类.
core/My_Controller.php看起来像这样:
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我创建普通控制器时,它们看起来像这样:
class Home extends MY_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('home');
}
}
Run Code Online (Sandbox Code Playgroud)
我正在创建一个管理员后端,我希望为控制器提供一个不同的基类而不是My_Controller.这是我可以有管理员控制器的常用方法(即authentication_check等)
我无法解决的是如何创建另一个扩展CI_Controller的控制器.
目标是管理员控制器扩展与前端控制器不同的基类.
管理基础控制器看起来像这样:
class MY_Admin_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
管理页面的普通控制器:
class Admin_home extends MY_Admin_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('admin_home');
}
}
Run Code Online (Sandbox Code Playgroud)
问题是要扩展CI_Controller类,必须将控制器文件命名为PREFIX_Controller.php并将其放在core /目录中.但我想要两个控制器类,它们不能具有相同的文件名.
Cub*_*Eye 28
你只需将它们放在同一个文件中,我就有一个与此完全相同的项目.
我们在MY_Controller.php
文件中只有admin和普通的扩展控制器,工作正常.
MY_Controller
扩展文件或其他扩展文件的主要原因是,当您加载基本文件(无论是库,帮助程序等)时,CodeIgniter会自动启动它们,您可以在这些文件中包含许多类.
编辑:
你甚至都不需要给他们打电话MY_Admin_Controller
或者MY_Controller
,我们有Admin_Controller
和User_Controller
和Ajax_Controller
在MY_Controller
文件
swa*_*ins 17
你正在做的是正确的.您只需要目录中的所有这些文件application/core
.以下是Phil Sturgeon关于此的帖子:
http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
http://philsturgeon.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY/
诀窍是使用这个__autoload()
功能 - 菲尔在他的帖子中描述.