【问题标题】:Find out where a helper is being loaded in CodeIgniter找出在 CodeIgniter 中加载助手的位置
【发布时间】:2021-02-16 15:12:16
【问题描述】:

我有一个项目,其中包含多个控制器、视图和助手(我接手工作的原始开发人员没有费心使用模型)。 在其中一个控制器 (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 仍然可以访问。怎么会这样?或者更确切地说:我如何找出加载助手的位置?

阿尔伯特

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

【问题讨论】:

    标签: php codeigniter view controller helper


    【解决方案1】:

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

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

    这是PHP's documentation debug_print_backtrace()

    最后,关于可以在何处包含此类文件,还有一些其他想法:

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

    【讨论】:

    • 你完全正确!它在 autoload.php 中!
    猜你喜欢
    • 2015-05-20
    • 2012-12-30
    • 1970-01-01
    • 2011-01-12
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2011-05-25
    相关资源
    最近更新 更多