【问题标题】:Determine what is the file of the function being called [duplicate]确定被调用的函数的文件是什么[重复]
【发布时间】:2012-03-15 13:53:09
【问题描述】:

可能重复:
How to find out where a function is defined?
get filename of extended class

在 PHP 中处理非 OO 代码时,我有时会发现自己在挖掘代码以找到像“该函数所在的位置”这样简单的内容。

function myfunction(){
    where_is_this_function();   
}

我的问题是,我怎样才能找到where_is_this_function() 所在的文件所在的位置

我知道有调试器、在文件中查找工具和其他选项,但我想知道是否有任何编程方式可以这样做,因为有时它更方便。

get_thefunction_file('where_is_this_function()')

【问题讨论】:

  • 另外,debug_backtrace() 的输出有时过于混乱
  • 看看reflection
  • 顺便说一句,任何体面的 IDE 都允许您在功能上按 Ctrl+LeftMouse(或其他快捷方式)将您带到那里。
  • 这就是你不使用分布在多个文件中的全局函数的原因
  • @Stewie 是的,如果每个人都使用 OO 或者至少组织好他们的代码,那就太棒了,不幸的是,我们无法选择我们维护谁的代码。

标签: php debugging


【解决方案1】:

您可以在该函数中使用debug_print_backtrace();,它应该漂亮地打印出它是如何被调用的以及来自什么文件

function myfunction(){
    debug_print_backtrace();//where_is_this_function();   
}

并输出一个编号列表,如

#0  myfunction() called at [/tmp/include.php:10]
#1  include(/tmp/include.php) called at [/tmp/test.php:3]

【讨论】:

    【解决方案2】:

    如果您只关心在代码中工作时函数的位置而不需要信息运行时,NetBeans 或 Eclipse 等开发 IDE 具有特定的“跳转到声明”功能。

    例如,在 NetBeans 中,您只需将光标放在“where_is_this_functiob”文本中的某处,然后按 CTRL+B。然后 NetBeans 尝试加载文件并直接跳转到函数定义。

    我很确定其他编辑器也有类似的功能。

    【讨论】:

    • 嗨,谢谢你的回答。是的,我知道有一些选择,我只是想知道一种代码明智的方法:)
    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2020-10-10
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    相关资源
    最近更新 更多