Php 功能加载不';t将数据抓取/捕获到包含的文件中

Php 功能加载不';t将数据抓取/捕获到包含的文件中,php,function,include,load,Php,Function,Include,Load,假设我的索引php文件中有这个函数 function load($file){ $file_path = $file.".php"; if(file_exists($file_path)){ include $file_path; }else{ echo "no such file"; } } 把它们放在我的索引里 $test = "test"; $test =load("test"); 在我的测试php文件中 我尝试回显测试变

假设我的索引php文件中有这个函数

  function load($file){
    $file_path = $file.".php";
    if(file_exists($file_path)){
      include $file_path;
    }else{
      echo "no such file";
    }
}
把它们放在我的索引里

$test = "test";


$test =load("test");
在我的测试php文件中

我尝试回显测试变量,它告诉我它是未定义的变量

但是如果我像这样把我的文件包括进去

包括“test.php”

它毫无问题地打印我的测试变量


知道为什么会发生这种情况以及解决方案是什么吗?

包含文件中的变量仍在函数加载的范围内。无法直接从父/主范围访问它

为了访问包含文件中定义的变量,您需要将文件直接包含在要访问这些变量的范围内


因此,您需要删除对
load()
的函数调用,并直接调用
include
来解决您的问题。没办法了。(除了可能
get_-defined_-vars()
extract()
不推荐!

我知道这一点,是否还有从load函数中包含我的文件的方法?(除了可能
get_-defined_-vars()
extract()
(不推荐!)-阅读文档中的相关内容,然后你可能知道该怎么做了。不,我不是在说变量,我是在说做像我一样的函数,但工作没有问题!读我的答案。范围不同。如果你不知道它是什么范围,用谷歌搜索它。@Fred,@Bowbi,伙计们,谢谢你们的大量帮助,但正如我看到的,我们在一个封闭的圈子里运行,没有结果。我的问题是我有一些变量和加载函数来加载文件,我只想在我包含的文件中使用这些变量/数组/等等。不幸的是,我对你们两个都不是很了解:)Incluide已经在做文件存在检查,如果文件不存在,就会发出错误警告。将它包装到另一个函数(并减慢速度)中的用例是什么?您的代码对我来说运行良好。是否尝试使用此文件或工作文件夹之外的任何其他文件?请尝试删除
$test=“test”不需要它@Hasanzohdygues这只是一个例子,我正在处理prject,我需要在我的控制器文件中使用这个函数,所以我在这个例子中简化了我的问题,因为它在我的项目中有相同的错误,所以向我们展示你的控制器文件结构。你的问题不清楚。