除非lcfirst(example_model.php),否则无法找到我的CodeIgniter 3.0.3模型文件


My CodeIgniter 3.0.3 model files cannot be found unless lcfirst (example_model.php)

我正在使用CodeIgniter 3.0.3构建一个简单的web应用程序,遇到了很多关于大写一致性的问题。CI 3.x文档明确指出,模型文件应为ucfirst,并使用lcfirst引用,即文件application/models/Foobar_model.php,使用$this->load->model('foobar_model')加载,并使用$this->foobar_model调用。来源:官方CI 3.x用户指南。

当我遵循这些规则时,我会得到以下错误消息Unable to locate the model you have specified: foobar_model。使用Ucfirst(即$this->load->model('Foobar_model')$this->Foobar_model)引用模型会生成完全相同的错误消息。我可以通过将文件名设为lcfirst application/models/foobar_model.php来解决这个问题,同时文件中的类名保持为Ucfirst。只要我将我的文件命名为lcfirst foobar_model.php,无论我是使用Ucfirst还是lcfirst从控制器内部引用它似乎都无关紧要。

奇怪的是,我发现我需要将application/controllers/Ucfirst_controller.php用于具有区分大小写路由的控制器,即$route['default_controller'] = 'Ucfirst_controller';。我在尝试将$route['default_controller'] = 'lcfirst_controller';路由到application/controllers/lcfirst_controller.php时收到404错误。

我在stackoverflow和其他论坛上发现的关于CodeIgniter模型和控制器问题的一切似乎都涉及到人们在CodeIgniter3.x上使用lcfirst而不是Ucfirst,或者在CodeIginiter2.x上使用Ucfirs而不是lcfirst。

基本上,我的问题是这种情况的不一致性是从哪里来的,我如何解决它?我想遵循标准,以便其他人稍后可以加入我的项目

其他信息:我认为这不重要,只是以防万一。我正在Ubuntu机器上的LAMP上开发ext4文件格式,这显然是区分大小写的。我计划用运行debian-7-wheezy的Google计算引擎部署我的项目,并使用HHVM堆栈。我目前只和一个合作伙伴一起开发,他正在使用不区分大小写的文件格式的MAMP堆栈进行开发,所以他不会遇到任何这些问题。

感谢大家:~)

当我从CI 2.x更新到3.0.3时,我的system/core/Loader.php文件没有正确更新。正确地更新这个文件解决了我的案例不一致问题,我现在可以将我的模型和控制器命名为Ucfirst.php,并将它们引用为$this->lcfirst,一切都正常工作。