我最近将我的codeigniter版本从1.7升级到2.1。但是,我正在努力扩展我的my_controller类,以前在放入app-> libraries文件夹时工作正常。
使用CI说明我已经将它移动了app - >核心目录,代码如下:
class MY_Controller extends CI_Controller
{
var $data=array();
var $secured=false;
var $area="user";
function my_Controller(){
parent::__construct();
// loading libraries etc
$this->load->library('session');
$this->load->helper('url');
$this->load->helper('common');
[..]
在配置文件中,我添加了以下代码行,如本教程所示:
http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY
/*
| -------------------------------------------------------------------
| Native Auto-load
| -------------------------------------------------------------------
|
| Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
| for base controllers and some third-party libraries.
|
*/
function __autoload($class)
{
if(strpos($class, 'CI_') !== 0)
{
@include_once( APPPATH . 'core/'. $class . EXT );
}
}
然而,我仍然收到以下PHP错误:
PHP致命错误:第5行的C:\ inetpub \ wwwroot \ latestCI \ application \ controllers \ home.php中找不到类'MY_Controller'
知道为什么这不起作用,谢谢
编辑:
似乎已经开始工作了。基本上MY_Controller必须遵循这个结构:
<?php
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
//constructor code here
}
//Custom functions here
}
?>
否则会引发错误。
答案 0 :(得分:1)
您必须在MY_Controller.php
下放置application/core/
文件(重音是重要的!)。使用codeiginiter版本2引入此文件夹(以及其他)。
如有疑问,请检查原始类文件位于system/
目录下的位置,并在application/
下查看该文件。
因此,如果CI_Controller.php
位于system/core/
之下,则MY_Controller
(扩展CI_Controller
)应转到application/core
。