在Code Igniter 2中的应用程序核心子文件夹中加载Class

时间:2014-03-13 08:19:14

标签: php codeigniter-2 hmvc

在我的application/core目录中,我有了课程MY_Controller。 现在,我想在两个路径application/core/Frontent/Frontend_Controller.phpapplication/core/Backend/Backend_Controller.php中创建两个类。然后我的模块控制器从Frontend_Controller和Backend_Controller类扩展。 但是,CI总是会引发类错误。

<小时/> 编辑2014年3月20日:

我使用了@manix的建议: 1.在/application/config/config.php

的末尾写下面的脚本

function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
        if (file_exists($file = APPPATH . 'core/Frontend/' . $class . EXT))
        {
            include $file;
        }

        if (file_exists($file = APPPATH . 'core/Backend/' . $class . EXT))
        {
            include $file;
        }
    }
}  

  1. 像这样创建/application/core/Backend/Backend_Controller.php
  2. 
    (defined('BASEPATH')) OR exit('No direct script access allowed');
    
    class Backend_Controller extends CORE_Controller {
    
    }
    
    1. 我有一个Menu类扩展Backend_Controller。然后收到此错误Fatal error: Class 'Backend_Controller' not found in codeigniter\application\widgets\menu\Controllers\menu.php on line 6。如果我将Backend_Controller.php放在/application/core/Backend_Controller.php,那就没问题。但我想将其放入子文件夹中。
    2. 解决方案(2014年3月24日更新) 感谢manix。我从他的代码编辑加载类。这是适用于我的代码。

      
      function __autoload($class) {
          if (strpos($class, 'CI_') !== 0) {
              if (file_exists($file = APPPATH . 'core/Frontent/' . $class . EXT)) {
                  include $file;
              }
      
              if (file_exists($file = APPPATH . 'core/Backend/' . $class . EXT)) {
                  include $file;
              }
      
              if (file_exists($file = APPPATH . 'core/' . $class . EXT)) {
                  include $file;
              }
          }
      }
      
      

1 个答案:

答案 0 :(得分:1)

尝试在__autoload文件夹中引发的config.php文件末尾显式调用application/config/函数。看看上面的例子:

function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
        if (file_exists($file = APPPATH . 'core/Frontent/' . $class . EXT))
        {
            include $file;
        }

        if (file_exists($file = APPPATH . 'core/Backend/' . $class . EXT))
        {
            include $file;
        }
    }
}