php 如何查看某个函数定义在 那个php文件中

lyf3312
  • 222

如何查看某段php脚本中出现的函数是在那个php文件中定义的!!急急急

回复
阅读 5.7k
4 个回答
✓ 已被采纳

使用ReflectionFunction。ReflectionMethod中文文档ReflectionFunction中文文档

<?php
    

function a() {
}
 
class b {
    public function f() {
    }
}
 
function function_dump($funcname) {
    try {
        if(is_array($funcname)) {
            $func = new ReflectionMethod($funcname[0], $funcname[1]);
            $funcname = $funcname[1];
        } else {
            $func = new ReflectionFunction($funcname);
        }
    } catch (ReflectionException $e) {
        echo $e->getMessage();
        return;
    }
    $start = $func->getStartLine() - 1;
    $end =  $func->getEndLine() - 1;
    $filename = $func->getFileName();
        echo "function $funcname defined by $filename($start - $end)\n";
    }
    function_dump('a');
    function_dump(array('b', 'f'));
    $b = new b();
    function_dump(array($b, 'f'));
?>

用IDE的话, 直接ctrl+鼠标单击.
用普通编辑器, 就整个项目下查找function 函数名.
用反射类 echo (new ReflectionFunction('函数名'))->getFileName()

用phpstorm,打开整个工程,然后Ctrl+鼠标点击函数名就可跳转到定义了。

如果是在一个项目里或者知道调用函数在哪个路径下的话,可以在命令行用grep查找。

grep -rn 'function 函数名(' 项目路径
例如:grep -rn 'function function_dump('  /Users/admin/Workspace/Project
结果:2.php:12:function function_dump($funcname) {       //可以看到是在2.php这个文件的第12行
宣传栏