function writeMethod(ReflectionMethod $method, ReflectionClass $class) { if ($method->getDeclaringClass() != $class) { return ""; } $acc = $method->getModifiers(); $func = ""; if ($acc & ReflectionMethod::IS_STATIC) { $func .= "static "; } if ($acc & ReflectionMethod::IS_ABSTRACT) { $func .= "abstract "; } if ($acc & ReflectionMethod::IS_FINAL) { $func .= "final "; } if ($acc & ReflectionMethod::IS_PUBLIC) { $func .= "public "; } if ($acc & ReflectionMethod::IS_PROTECTED) { $func .= "protected "; } if ($acc & ReflectionMethod::IS_PRIVATE) { $func .= "private "; } $data = methodData($method); $params = $data[1]; if (empty($params)) { $refparams = $method->getParameters(); if (!empty($refparams)) { foreach ($refparams as $param) { $params[] = "\$" . $param->name; } } else { for ($i = 0; $i < $method->getNumberOfParameters(); $i++) { $params[] = "\$arg{$i}"; } } } $params = join(",", $params); return "{$data['0']}{$func}function {$method->name}({$params}) {}\n"; }
$details .= "{$name} -- финальный метод<br>"; } if ($method->isConstructor()) { $details .= "{$name} -- метод конструктора<br>"; } if ($method->returnsReference()) { $details .= "{$name} -- метод возвращает ссылку а не значение<br>"; } return $details; } $prod_class = new ReflectionClass("CDProduct"); $methods = $prod_class->getMethods(); // записываем в переменную объект класса ReflectionMethod, в котором описаны методы foreach ($methods as $method) { // перебираем все методы print methodData($method); // выводим информацию о методах print "<br>------------------------------</br>"; } echo "<hr>"; $method_summ = $prod_class->getMethod('getSummaryLine'); // записываем в переменную метод print ReflectionUtil::getMethodSource($method_summ); // выводим код метода echo "<hr>"; //--------------------------------------------------------------------------------- // исследование аргументов методов function argData(ReflectionParameter $arg) { $details = ""; $declaringClass = $arg->getDeclaringClass();