如何检索php中特定包含文件中定义的变量?

时间:2011-02-08 14:04:33

标签: php include

我想知道在包含文件中声明的所有变量。

示例代码是:

  1. 包含文件:

    <?php
    $a = 1;
    $b = 2;
    $c = 3;
    $myArr = array(5,6,7);
    ?>
    
  2. 主要档案:

    <?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;
    ?>
    
  3. 我尝试使用get_defined_vars()的差异似乎并不能提供准确的信息。 它给出了:

    array(2) {
      ["b"]=>
      int(2)
      ["c"]=>
      int(3)
    }
    

    $ a和$ myArr似乎不见了。 我可以使用哪些其他方法?

1 个答案:

答案 0 :(得分:2)

这样做真的不是一件好事,希望它只是用于调试。然后你应该找到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] . ', ';
}

这会返回所有变量,甚至是非全局变量和那些在该脚本中未设置的变量(!)