如何强制在全局范围内执行PHP文件?

时间:2011-06-30 17:10:58

标签: php

我有一个php文件,比如include.php,其中包含以下内容:

<?php
$myVar = "foo";
?>

现在,我想创建一个名为GlobalInclude的类,它可以包含全局范围内的文件:

class GlobalInclude {
    public function include( $file="include.php" ) {
        #do something smart
        include $file
        #do something smart
    }
}

在它的当前形式中,$ myVar变量仅在include函数的范围内可用。我想做点什么:

GlobalInclude::include( "include.php" );
echo $myVar;

输出 FOO

关于如何实现这一目标的任何想法?

4 个答案:

答案 0 :(得分:2)

请参阅PHP: "Global" Include

答案 1 :(得分:0)

可怕的丑陋黑客:

$GLOBALS[$myVar] = $myValue;

在include.php(或您实际使用的任何文件)中。

答案 2 :(得分:0)

编辑:抱歉,我误读了你原来的帖子。您可以使用get_defined_vars获取当前作用域中的所有变量并返回它们来执行此操作:

public function includeAndGetVars($file) {
  include $file;
  return get_defined_vars();      
}

然后在调用函数后,使用extract将结果转储到当前范围:

extract(includeAndGetVars("include.php"));
echo $myVar;

答案 3 :(得分:0)

我想我会在这里更新答案。 我将我的app条目包装在try catch中,并将IncludeInGlobalException文件名作为消息投掷。然后,在catch块中,我包含了文件。