php - 找出在 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 仍然可以访问。怎么会这样?或者更确切地说:我如何找出加载助手的位置?
阿尔伯特
请告诉我,如果我需要添加一些代码。
解决方案
您还应该使用双引号搜索 'loan' 的变体"loan
,因为这也是有效的。
在loans_helper.php
文件的顶部, add debug_print_backtrace(); die;
,它将输出一些关于执行路径的有用信息。请注意,如果您在浏览器中进行测试,您应该查看页面的源代码,以获得更可用的格式。从回溯中,您将能够确定文件是如何被包含的(即通过 CI 的加载器系统,或直接通过include
或require
)。
这是PHP在debug_print_backtrace()
.
最后,这里有一些关于可以包含此类文件的其他想法:
- 在 CI 的
autoload.php
配置文件中。有一个用于自动加载帮助文件的项目。 - 如果项目中存在 Composer,请检查 composer.json 文件以获取对该文件的引用。
- 从技术上讲,CI 的帮助文件不需要通过 CI 的加载器包含,因此该文件可能会手动包含在 using
include
或require
.
推荐阅读
- ios - 通过 kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly 没有 FaceID 的 SecItemCopyMatching
- dns - Bind9:限制子网查询
- java - Maven:无效的目标版本:10
- python - Pyplot-扩展x轴
- wordpress - 如何自动填写联系表格 7
- ruby - Elasticsearch 日期无效格式太短
- python - 在 Pandas 中合并两个具有不同数量关键元素的 DataFrame
- python - 将 Pandas 数据帧的行映射到 numpy 数组
- java - Apache Commons CLI 选项值与其他选项的名称相同
- c# - 单独的保护条款是否需要单元测试?