2010-06-23 43 views
3

我不时递给我一些臃肿的,没有记录的错误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' 

回答

11

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

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

+2

+1 Ctrl +单击在NetBeans中非常方便的功能=) – 2010-06-23 00:59:29

+1

比方说,我已责成由客户端做了几个补丁到他们在测试服务器上的一些代码。他们给我的FTP信息,我去解决它。我发现下载所有文件很麻烦,并且使用IDE在本地进行设置(通常,我将如何使用IDE - 本地/存在于本机上的所有文件)。我可以使用IDE(最好是NetBeans)吗? – Cam 2010-06-23 01:05:10

+1

Netbeans允许你通过ftp设置远程项目,因为这个原因 – 2010-06-23 01:07:44

2

试试这个:

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

但如果它是只为开发目的,它应该是,然后只需运行

的grep -r “功能functionName” *

从基本目录

4

grep或类似grep的工具。我更喜欢ack,这使默认情况下输出更容易阅读并忽略版本控制文件。我非常喜欢这些工具来限制自己在臃肿,点击率较高的IDE中编码。无论如何,以这种方式寻找事物对我来说总是比Eclipse更好。

要使用grep,您需要cd到基本目录,然后递归grep目录的内容为函数名称,可能包括关键字来定义一个函数。就像这样:

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

确认是这样的:

cd project/ 
ack "def wallace(" 
+1

@Andrey - 因为你说了一些有趣的事情而高举你。你不认真吧? – jeffcook2150 2010-06-23 01:17:07

+0

Vim是我的开发环境,所以这正是我如何找到功能。没有必要是尖刻的,cookiecaper。 – 2010-06-23 01:37:36