我有一个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
关于如何实现这一目标的任何想法?
答案 0 :(得分:2)
答案 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块中,我包含了文件。