除非 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 调用。资料来源: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 而文件中的 class 名称仍然是 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 错误。

我在 Whosebug 和其他论坛上发现的关于 CodeIgniter 模型和控制器问题的所有内容似乎都涉及人们在 CodeIgniter 3.x 上使用 lcfirst 而不是 Ucfirst,或者在 CodeIgniter 2.x 上使用 Ucfirst 而不是 lcfirst .

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

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

谢谢大家:~)

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