Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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_Include_Scope - Fatal编程技术网

在php中,如何在函数中包含文件并仍然授予包含文件全局作用域的函数

在php中,如何在函数中包含文件并仍然授予包含文件全局作用域的函数,php,include,scope,Php,Include,Scope,我被一些抽象和组织错误所困扰,我决定使用一个名为Loader的类在php应用程序中包含文件,如下所示 class Loader { public $loadedFiles=array(); public function isLoaded($fileName) { if(in_array($fileName,$this->loadedFiles)) return true; else return

我被一些抽象和组织错误所困扰,我决定使用一个名为Loader的类在php应用程序中包含文件,如下所示

class Loader
{
    public $loadedFiles=array();

    public function isLoaded($fileName)
    {
        if(in_array($fileName,$this->loadedFiles))
        return true;
        else 
        return false;
    }

    public function load()
    {
        $fileList=func_get_args();
        foreach ($fileList as $file)
        {
            if(!$this->isLoaded($file))
            {
                $flag=include(ROOT_DIR_PATH.'includes'.DS.$file);
                if($flag)
                {
                    $this->loadedFiles[]=$file;

                }
                else
                return false;
            }
        }
    }
}
现在,我可以在我的应用程序中使用类似这样的内容包含文件

$loader=new Loader();
$loader->load('db.class.php','utility.php','objects.php');

但问题是,现在上述方法包含的文件的所有函数都被授予了上述方法的作用域
load
。现在我不能使用包含文件的任何功能。每当我使用上述包含文件的任何函数时,我都会收到一条警告,说
未定义函数
。是否有某种方法可以将全局作用域授予包含文件的函数。

问题似乎出在其他地方。我试着模拟你想做的事情,这对我很有效
include1.php

 <?php
 function tester()
     echo "This is tester\n";
 }
<?php

class Loader {
    public function load() {
        $var = include('include1.php');
    }
}

$loader = new Loader();
$loader->load();
tester();

看起来问题出在其他地方。我试着模拟你想做的事情,这对我很有效
include1.php

 <?php
 function tester()
     echo "This is tester\n";
 }
<?php

class Loader {
    public function load() {
        $var = include('include1.php');
    }
}

$loader = new Loader();
$loader->load();
tester();
是路径$flag=include(根目录路径'includes'.DS.$file);正确吗?路径$flag=include(根目录路径'includes'.DS.$file);对的