首页 > 解决方案 > 找出在 CodeIgniter 中加载助手的位置

问题描述

我有一个项目,其中包含几个控制器、视图和助手(我接手工作的原始开发人员没有费心使用模型)。在其中一个控制器 (Iframes.php) 中,(当然)有一个函数 __construct()、一个 index() 和一个名为 view() 的函数。在构造中,有一个 $this->load->helper('iframes'); 没有其他助手正在加载。

该网站正在通过地址https://website.ext/iframes/view/1234567890访问

在 iframes_helper.php 中,没有任何对另一个帮助文件的引用。但是 iframes_helper.php 正在调用一个名为 get_loans() 的函数。该函数只存在于一个文件中:loans_helper.php

还有其他控制器加载loan_helper.php(以正常方式)。

如果我将loans_helper.php 重命名(更改为loans_helper.php1),系统将无法加载,说明文件丢失。它没有告诉我在哪里提到了丢失的文件。

我已经搜索了所有文件

load->helper('loans')

就算

load->helper('loans

('loans')

但是没有任何地方可以参考loans_helper 文件。至少不在 Iframe 控制器或属于它的文件中使用的控制器中。

但是函数 get_loans 仍然可以访问。怎么会这样?或者更确切地说:我如何找出加载助手的位置?

阿尔伯特

请告诉我,如果我需要添加一些代码。

标签: phpcodeigniterviewcontrollerhelper

解决方案


您还应该使用双引号搜索 'loan' 的变体"loan,因为这也是有效的。

loans_helper.php文件的顶部, add debug_print_backtrace(); die;,它将输出一些关于执行路径的有用信息。请注意,如果您在浏览器中进行测试,您应该查看页面的源代码,以获得更可用的格式。从回溯中,您将能够确定文件是如何被包含的(即通过 CI 的加载器系统,或直接通过includerequire)。

这是PHPdebug_print_backtrace().

最后,这里有一些关于可以包含此类文件的其他想法:

  • 在 CI 的autoload.php配置文件中。有一个用于自动加载帮助文件的项目。
  • 如果项目中存在 Composer,请检查 composer.json 文件以获取对该文件的引用。
  • 从技术上讲,CI 的帮助文件不需要通过 CI 的加载器包含,因此该文件可能会手动包含在 usingincluderequire.

推荐阅读