我的控制器没有扩展

时间:2013-02-13 14:17:08

标签: php codeigniter

我最近将我的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
}


?>

否则会引发错误。

1 个答案:

答案 0 :(得分:1)

您必须在MY_Controller.php下放置application/core/文件(重音是重要的!)。使用codeiginiter版本2引入此文件夹(以及其他)。

如有疑问,请检查原始类文件位于system/目录下的位置,并在application/下查看该文件。
 因此,如果CI_Controller.php位于system/core/之下,则MY_Controller(扩展CI_Controller)应转到application/core