восстановить / получить код функции php

Могу ли я программно получить код функции по имени?

Подобно:

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

Является ли это возможным?

Существуют ли какие-либо самоописательные функции php для восстановления кода функции / класса?
(значит, вместо того, чтобы получать исходный код прямо из исходного файла)

В Java существует: http://java.sun.com/developer/technicalArticles/ALT/Reflection/

В PHP:
get_class_methods ()
тип
ReflectionFunction (спасибо Alin Purcaru)

Расширяясь предложение использовать ReflectionFunction, вы можете использовать что-то вроде этого:

 $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, который дает вам члены класса (константы, переменные и методы) и их видимость, но по-прежнему не имеет реального кода.


Обходной путь (это связано с чтением исходного файла):
Используйте ReflectionFunction :: export, чтобы узнать имя файла и интервал строки, где объявлена ​​функция, а затем прочитайте содержимое из этого файла в этих строках. Используйте строчную обработку, чтобы получить то, что находится между первым { и последним } .

Примечание. API Reflection плохо документирован.