一尘不染

Linux上的Codeigniter类和文件名区分大小写(centos)

linux

我遇到一个区分大小写的问题,无法解决问题。

这就是我的文件结构。我只输入要使用的目录,但实际上我使用的是完整安装的CI3。

/application
    ....
    /controllers/
        application_controller.php
    /core/
        MY_Controller.php
        Public_controller.php
    ....
    /models/
        Application_model.php
    ....

这是类定义语法的样子:

/application/core/My_Controller.php

class MY_Controller extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }
}

/application/core/Public_Controller.php

class Public_Controller extends MY_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    // Application logic here...
}

/application/controllers/application_controller.php

class Application_controller extends Public_Controller
{

    public function __construct()
    {
        parent::__construct();
    }

    // Application logic here...
}

阅读文档,我发现我应该为类命名:

Foo_Controller.php

然后,我总是(认为)类定义应该与文件名匹配。所以:

class Foo_Controller extends Bar_Controller {
    ....
}

然后出现500错误,或者没有错误,然后出现白页。当我在本地(mac)工作时,一切正常。截至目前(使用上述语法),我至少正在获取默认的codeigniter
404页面。使用时

error_log(__FILE__);

在每个班级的顶部,我要做的就是 My_Controller.php

感谢您的任何建议!


阅读 266

收藏
2020-06-03

共1个答案

一尘不染

Codeigniter 更改日志

更改了文件命名约定(类文件名现在必须是 Ucfirst其他所有 文件都必须 小写 )。

所以你的控制器和文件名应该是

  • My_controller(仅M大写字母其余小写字母)
  • 公共控制器
  • Application_controller
  • Foo_controller

我自己不喜欢这种情况下新的命名约定CI-2更好。

注意:

控制器名称Public_Controller(C大写字母)和文件名Public_controller.php可能有效,但我希望两个名称保持相同,因此控制器名称应为Public_controller

2020-06-03