重构/获取php函数的代码

我可以通过它的名字以编程方式获得函数的代码?

喜欢:

function blah($a, $b) { return $a*$b; } echo getFunctionCode("blah"); 

可能吗?

有没有任何PHP自我描述函数来重build函数/类代码?
(而不是从源文件中获取源代码)

在Java中存在: http : //java.sun.com/developer/technicalArticles/ALT/Reflection/

在PHP中:
get_class_method(0函数)
types
ReflectionFunction(感谢Alin Purcaru)

扩展使用ReflectionFunction的build议,你可以使用像这样的东西:

 $func = new ReflectionFunction('myfunction'); $filename = $func->getFileName(); $start_line = $func->getStartLine() - 1; // it's actually - 1, otherwise you wont get the function() block $end_line = $func->getEndLine(); $length = $end_line - $start_line; $source = file($filename); $body = implode("", array_slice($source, $start_line, $length)); print_r($body); 

没有任何东西会给你实际的函数代码。 接近可用的唯一东西是ReflectionFunction类。 对于具有ReflectionClass的类,可以为您提供类成员(常量,variables和方法)及其可见性,但仍然没有实际的代码。


解决方法 (它涉及读取源文件):
使用ReflectionFunction :: export来找出声明函数的文件名和行间隔,然后从那个行读取文件中的内容。 使用string处理来获取第一个{和最后一个}

注意:Reflection API的logging很差。