函数加载不抓取/捕获数据到包含的文件


function load doesn't grab / catch data to the included file

假设我的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变量它告诉我它是一个未定义的变量

但是如果我像这样包含我的文件

包括"test.php";

它打印我的测试变量没有问题

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

包含的文件中的变量仍然在函数加载的作用域中。它不能直接从父/主作用域访问。

为了访问被包含文件中定义的变量,您需要直接将文件包含在您想要访问这些变量的作用域中。

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