Example #1
0
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";
}
Example #2
0
        $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();