3

フォルダーを処理し、各グローバル変数が使用された回数を数えたいと思います。私はグローバルのリストを持っていますが、スクリプトがインスタンスの名前と数の両方を検出して出力すると、よりクールになります。ただし、これは実行時に行うことはできません。

そうするためにPHP内でtoken_get_allを使用することは可能だと思いますが、ドキュメントはかなりまばらです...

4

1 に答える 1

3

これは、コードからすべてのグローバル変数を抽出する方法を示すために作成した単純な FSM です。

$tokens = token_get_all('<?php function a() { global $b,

$c; } ?>');


$state = 0; // 1 for processing T_GLOBAL, 0 otherwise
$global_vars = array();
foreach ($tokens as $token) {
    if (!is_array($token)) {
        if ($state == 1 && $token == ';') {
            $state = 0;
        }

        continue;
    }

    if ($token[0] == T_GLOBAL) {
        $state = 1;
        continue;
    }

    if ($state == 1 && $token[0] == T_VARIABLE) {
        $global_vars[] = $token[1];
        continue;
    }
}

var_dump($global_vars);

各変数にカウンターを追加するのは非常に簡単です。

于 2013-01-04T00:23:26.807 に答える