<?php require_once "fullshop.php"; $prod_class = new ReflectionClass('CdProduct'); $method = $prod_class->getMethod("__construct"); $params = $method->getParameters(); foreach ($params as $param) { print argData($param) . "\n"; } function argData(ReflectionParameter $arg) { $details = ""; $declaringclass = $arg->getDeclaringClass(); $name = $arg->getName(); $class = $arg->getClass(); $position = $arg->getPosition(); $details .= "\${$name} has position {$position}\n"; if (!empty($class)) { $classname = $class->getName(); $details .= "\${$name} must be a {$classname} object\n"; } if ($arg->isPassedByReference()) { $details .= "\${$name} is passed by reference\n"; } if ($arg->isDefaultValueAvailable()) { $def = $arg->getDefaultValue(); $details .= "\${$name} has default: {$def}\n"; } if ($arg->allowsNull()) { $details .= "\${$name} can be null\n"; }
$position = $arg->getPosition(); $details .= "{$name} Находится на позиции {$position} <br>"; if (!empty($class)) { $classname = $class->getName(); // возвращает объект класса ReflectionClass если в сигнатуре класса было уточнение $details .= "{$name} должен быть объектом типа {$classname} <br>"; } if ($arg->isPassedByReference()) { // проверяет является ли аргумент ссылкой $details .= "{$name} передан по ссылке <br>"; } if ($arg->isDefaultValueAvailable()) { // проверяет есть ли значение по умолчанию $def = $arg->getDefaultValue(); // получает значение по умолчанию $details = "{$name} по умолчанию равно: {$def} <br>"; } return $details; } $prod_class = new ReflectionClass("CDProduct"); $method = $prod_class->getMethod("__construct"); // записываем в переменную объект класса ReflectionMethod, в котором описан метод __construct $params = $method->getParameters(); // записываем в массив объект класса ReflectionParameter, в котором описаны аргументы метода foreach ($params as $param) { // перебираем массив с аргументами print argData($param); // передаём каждый аргумент функции argData() } echo "<hr>"; echo "</pre>";