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

时间:2015-11-03 20:45:24

标签: php codeigniter model-view-controller hhvm codeigniter-3

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

当我遵循这些规则时,会收到以下错误消息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模型和控制器问题的所有内容似乎都涉及到人们在CodeIgniter 3.x上使用lcfirst而不是Ucfirst,或者在CodeIgniter 2.x上使用Ucfirst而不是lcfirst。

基本上我的问题是这种情况不一致来自何处以及如何解决?我想遵循标准,以便其他人可以在以后加入我的项目。

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

谢谢大家:〜)

1 个答案:

答案 0 :(得分:0)

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