function func() {
    // ...
}

我有函数名 "func" ,但没​​有它的定义。

在 JavaScript 中,我只是使用 alert() 来查看定义。

PHP中是否有类似的功能?

最佳答案

您可以使用 ReflectionFunctionAbstract 中定义的 getFileName()、getStartLine()、getEndLine() 方法从其源文件(如果有)中读取函数/方法的源代码。

例如(没有错误处理)

<?php
printFunction(array('Foo','bar'));
printFunction('bar');


class Foo {
  public function bar() {
    echo '...';
  }
}

function bar($x, $y, $z) {
  //
  //
  //
  echo 'hallo';

  //
  //
  //
}
//


function printFunction($func) {
  if ( is_array($func) ) {
    $rf = is_object($func[0]) ? new ReflectionObject($func[0]) : new ReflectionClass($func[0]);
    $rf = $rf->getMethod($func[1]);
  }
  else {
    $rf = new ReflectionFunction($func);
  }
  printf("%s %d-%d\n", $rf->getFileName(), $rf->getStartLine(), $rf->getEndLine());
  $c = file($rf->getFileName());
  for ($i=$rf->getStartLine(); $i<=$rf->getEndLine(); $i++) {
    printf('%04d %s', $i, $c[$i-1]);
  }
}

关于php - 有没有办法在PHP中输出函数的定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1781335/

10-13 05:48