Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,自定义包含函数-如何生成所有其他函数&;可访问变量?_Php_Function_Include - Fatal编程技术网

PHP,自定义包含函数-如何生成所有其他函数&;可访问变量?

PHP,自定义包含函数-如何生成所有其他函数&;可访问变量?,php,function,include,Php,Function,Include,我已经为我的应用程序设计了一个自定义的include函数,这是为了让我的生活更轻松,除非它完全相反,并导致我调试相同类型的错误数小时,直到这个灯泡时刻意识到它是什么 因为文件包含在函数中,所以文件中的变量、函数等不是全局的 我有没有办法让它发挥作用,或者整个练习毫无意义 请参见下面的代码 function import($a,$b = 1) { global $options; if($b == 1) $folder = "internal_functions";

我已经为我的应用程序设计了一个自定义的include函数,这是为了让我的生活更轻松,除非它完全相反,并导致我调试相同类型的错误数小时,直到这个灯泡时刻意识到它是什么

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

我有没有办法让它发挥作用,或者整个练习毫无意义

请参见下面的代码

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,$b=1){
全球美元期权;
如果($b==1)$folder=“内部函数”;
elseif($b==2)$folder=“外部函数”;
else$folder=$b;
$file_path=$options['LIB_DIR'].“/”$folder./“$a..php”;
如果(@!file_存在($file_路径)){
$\u criticalFiles=array(“会话服务/会话加载程序”、“数据库服务/db\u连接”、“用户服务/isLoggedIn”);
if(在数组中($a,$\u关键文件)){
die(“严重错误。
找不到{$a}”); } }否则{ 需要一次(文件路径); } }

谢谢

这是一个安全问题。在函数中创建的任何变量,如果希望在函数外部可用,则必须将其
全局化。

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

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

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

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

你还可以添加
$a.php
中的内容吗?
$a.php
是文件的变量名,
$b
是文件夹的变量名我理解这一点,但是有没有一种方法可以作为一种二鸟一石的方法,或者我必须初始化每个变量?磨损的结--你必须做每一个,而这并不考虑外部文件中定义的任何函数。隐马尔可夫模型。。。。我不确定我能为你做点什么,我得摆弄一下,时间不早了,我累了。请查看。感谢您的帮助-只需省去所有这些,将导入($a,$b)函数中的内容放入for循环,并将include放入数组中即可。:)