【问题标题】:My Controller not extending我的控制器没有扩展
【发布时间】:2013-02-13 14:17:07
【问题描述】:

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


?>

否则会报错。

【问题讨论】:

  • 您是否尝试过将其移入库文件夹?
  • 是的,这是我做的第一件事。
  • 尝试删除您在配置文件中添加的行并检查
  • 还是不行。 :(
  • 代码中有一些不好的做法。使用__construct() 而不是function my_Controller()。使用public 而不是var。为了便于阅读,请明确调用函数 public/private/protected 这些不会解决您的问题,但现在是我们应该适应新的设计和语法的时候了。

标签: php codeigniter


【解决方案1】:

您必须将您的MY_Controller.php 文件(大写很重要!)放在application/core/ 下。该文件夹是随 codeiginiter 版本 2 引入的(以及其他)。

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

【讨论】:

  • 正确的 MY_Controller.php(大写在应用程序核心中)和 CI_Controller.php 在 system/core/ 它仍然抛出相同的错误。我的 php 版本是 5.3.19 这会影响它吗?
  • 好像已经修复了,问题出在语法上。它不喜欢函数 my_Controller(){
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多