在PHP中查找全局变量的声明


Find declaration of a global variable in PHP

有没有一种快速简洁的方法可以在PHP中找到全局变量的声明

如果我们处理的是一个大型代码库,其中全局变量可能在许多不同的文件中被引用:

  • 使用ctags跳转到声明将转到本地语句,在该语句中,全局将进入当前文件的作用域
  • 使用grepack搜索global $foo会得到一个文件列表,其中全局变量已进入作用域,但没有全局变量的确切声明

有没有任何工具/vim plugin/etc可以告诉你第一次声明全局的确切位置?


更新:我想您可以设置一个监视断点并查找对变量的第一次访问。不幸的是,Xdebug中还不支持这种类型的断点,所以对于我的特定设置,它不起作用。

您是基于Unix的操作系统吗?

我通常做一些类似grep -rn 'global $myvar' . 的事情

在顶级目录中。这将在当前目录中的文件中递归搜索声明。

或者,如果你想获得幻想,你可以只搜索PHP文件:

grep -rn --include '*.php' 'global $myvar' .

您所找到的global $foo声明之外不需要任何声明。这些声明了全局变量。全局变量很容易被从这些函数中引用。

以下代码有效,例如:

function print_it() {
    global $my_global;
    echo $my_global;
}
function set_it() {
    global $my_global;
    $my_global = 17;
}
set_it();
print_it();  // echos 17