0

我最近将我的 codeigniter 版本从 1.7 升级到了 2.1。但是,我正在努力扩展我的 my_controller 类,以前它在放入 app->libraries 文件夹时工作正常。

用 CI 指令我也把它移到了 app -> core 目录,代码如下:

    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
}


?>

否则会抛出错误。

4

1 回答 1

1

您必须将MY_Controller.php文件(大写很重要!)放在application/core/. 这个文件夹是在 codeiginiter 版本 2 中引入的(除其他外)。

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

于 2013-02-13T15:22:55.653 回答