【问题标题】:PHP, Custom include function - how do I make all other functions & variables accessible?PHP,自定义包含函数 - 如何使所有其他函数和变量可访问?
【发布时间】:2017-02-08 20:53:52
【问题描述】:

我为我的应用程序设计了一个自定义包含函数,它旨在让我的生活更轻松,但它完全相反,导致我在几个小时内调试相同类型的错误,直到这个灯泡时刻意识到它是什么.

因为文件被包含在函数中,所以文件中的变量、函数等不是全局的。

有什么方法可以让它发挥作用,还是整个练习毫无意义?

代码见下文。

function import($a,$b = 1) { 
    global $options;

        if($b == 1) $folder = "internal_functions";
        elseif($b == 2) $folder = "external_functions";
        else $folder = $b;

        $file_path = $options['LIB_DIR']."/".$folder."/".$a.".php";

        if(@!file_exists($file_path)) {

            $_criticalFiles = array("sessionService/session_loader", "databaseService/db_connection","userService/isLoggedIn");

            if(in_array($a,$_criticalFiles)) {
                die("<center><h1>Critical Error.<br />Could not find {$a}.</h1></center>");
            }

        } else {
            require_once($file_path);
        }
    }

谢谢

【问题讨论】:

  • 你能把$a.php里面的东西也加进去吗?
  • $a.php 是文件的变量名,$b 是文件夹的变量名

标签: php function include


【解决方案1】:

这是scope 的问题。在函数中创建的任何您希望在函数外部可用的变量都必须是globalized。

【讨论】:

  • 我明白这一点,但是有没有办法以 2 鸟 1 石的方法来做,还是我必须初始化每个单独的变量?
  • 磨损的结——你必须做每一个,这不关心外部文件中定义的任何功能。嗯....namespaces可以为你做点什么,我不确定,我不得不摆弄它,而且已经很晚了,我很累。看看吧。
  • 感谢您的帮助 - 只需删除所有内容并将 import($a,$b) 函数中的内容放入 for 循环并将包含的内容放入数组中。 :)
【解决方案2】:

对于那些想知道我是如何解决这个问题的人,我没有。

相反,我将所有文件放在一个数组中,例如

$filesInclude = array("file1","file2","file3","etc");

本地和外部文件有 2 个不同的数组,然后在数组上运行一个 for 循环。 :)

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2022-06-14
    • 2017-06-09
    • 2019-01-30
    • 2013-09-13
    • 2017-12-02
    相关资源
    最近更新 更多