Проверьте PHP 5.4
Они планируют выпустить PHP 5.4 в этом году, который будет иметь метод отражения (текущий в сборках dev) параметр->getHint ()
Однако до тех пор, пока 5.4 не перейдет в GA, я использую ReflectionClass :: getDocComment ()
Например, вы можете указать его в @param.
// Adapted from meager's example
class Bar {}
class Foo {
/**
* @param MyType $value
* @param array $value2
*/
function __construct(Bar $value, array $value2) {
}
}
// Regex
function getHint( $docComment, $varName ) {
$matches = array();
$count = preg_match_all('/@param[\t\s]*(?P<type>[^\t\s]*)[\t\s]*\$(?P<name>[^\t\s]*)/sim', $docComment, $matches);
if( $count>0 ) {
foreach( $matches['name'] as $n=>$name ) {
if( $name == $varName ) {
return $matches['type'][$n];
}
}
}
return null;
}
$reflection = new ReflectionClass('Foo');
$constructor= $reflection->getConstructor();
$docComment = $constructor->getDocComment();
$params = $constructor->getParameters();
foreach ($params AS $param) {
$name = $param->getName();
echo $name ." is ";
//echo $param->getHint()."\n"; // in PHP 5.4
echo getHint($docComment, $name)."\n"; // work around
}
Вывод:
value is MyType
value2 is array