如何检索在PHP中的特定包含文件中定义的变量?
问题描述:
我想知道包含文件中已声明的所有变量。如何检索在PHP中的特定包含文件中定义的变量?
示例代码:
-
包含文件:
<?php $a = 1; $b = 2; $c = 3; $myArr = array(5,6,7); ?>
-
主文件:
<?php $first = get_defined_vars(); include_once("include_vars.php"); $second = get_defined_vars(); $diff = array_diff($second ,$first); var_dump($diff); $x = 12; $y = 13; ?>
我试图使用get_defined_vars的差异()不似乎给出了准确的信息上。 它提供:
array(2) {
["b"]=>
int(2)
["c"]=>
int(3)
}
$和$ myArr,该似乎丢失。 我可以使用哪些其他方法?
答
这样做确实不是一件好事,希望它只是用于调试。然后,你应该找到阵列的键是get_defined_vars
返回,而不是它们的值之间的差异:
$diff = array_diff(array_keys($second),array_keys($first));
如果不希望在你的文件,更复杂的方式将使用Tokenizer
:
$tokens = token_get_all(file_get_contents("include_vars.php"));
foreach($tokens as $token) {
if ($token[0] == T_VARIABLE)
echo $token[1] . ', ';
}
,将返回所有的变量,甚至非全局的人,并且是在该脚本(!)
+0
是的,只是为了调试目的。不是核心实施的一部分。 – DhruvPathak 2011-02-08 14:21:58
不要使用全局变量取消设置的。让我重复一遍。不要使用全局变量。传递包装在容器(如对象)中的变量。请注意,我表示通过,而不是全局通话。阅读[依赖注入](http://www.phparch.com/2010/03/static-methods-vs-singletons-choose-neither/)... – ircmaxell 2011-02-08 14:06:48