找出函数的来源?

时间:2010-06-23 00:53:07

标签: php function

我不时会将臃肿,无证,有缺陷的PHP代码交给我修复。我有几个工具用于尽快修复此类代码。

我不确定如何做到这一点偶尔会让我感到悲痛的是找到一个函数所在的位置(在哪个文件中定义)。请注意,我不想知道函数从中调用的位置。

例如,我希望能够这样做:

//file1.php
function foo(){
    echo 'bar';
}

//file2.php
where_is_function('foo');//error
include('file1.php');
echo where_is_function('foo');//outputs'file1.php'

3 个答案:

答案 0 :(得分:11)

为自己设置一个好的IDE,例如netbeanseclipse。它们具有查找函数声明的功能,还可以找到这些函数的用法(在重构下)。

我个人使用netbeans。我只需要ctrl-click一个函数名称& netbeans将找到定义函数的位置,并自动为我打开文件。

答案 1 :(得分:4)

grep或类似grep的工具。我更喜欢ack,它使输出更容易阅读并默认忽略版本控制文件。我非常喜欢这些工具来限制自己在臃肿的点击式IDE中编写代码。无论如何,以这种方式找到东西总比我的Eclipse更好。

要使用grep,您将cd到基本目录,然后递归grep目录的内容以获取函数名称,可能包括用于定义函数的关键字。像这样:

cd project/
grep -Rn "def wallace(" .

Ack就像:

cd project/
ack "def wallace("

答案 2 :(得分:2)

试试这个:

function getFunctionLocation($fname) {  
    $includeFilesString = implode(" ", get_included_files());  
    return system("grep 'function $fname' $includeFilesString -l");          
}

但是,如果它仅用于开发目的,那么就应该运行

  

grep -r“function functionName”*

来自基础目录