Как получить переменные, определенные в конкретном включаемом файле в php? - PullRequest
0 голосов
/ 08 февраля 2011

Я хочу знать все переменные, которые были объявлены внутри включаемого файла.

Пример кода:

  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;
    ?>
    

Моя попытка использовать разность get_defined_vars () не дает точной информации.Это дает:

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

$ a и $ myArr, похоже, отсутствуют.Какие еще методы я могу использовать?

1 Ответ

2 голосов
/ 08 февраля 2011

Это действительно нехорошо, надеюсь, это нужно только для отладки.Затем вы должны найти разницу между ключами массивов, которые возвращает 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] . ', ';
}

Это вернуло бы все переменные, даже не глобальные и те, которые были не установлены в этом скрипте (!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...