从 ReflectionParameter 中提取类型提示
Extract type hint from ReflectionParameter
class C
{
function methodA(Exception $a, array $id){}
}
function getClassName(ReflectionParameter $param) {
$regex = '/\[([^\]]*)\]/';
preg_match($regex, $param->__toString(), $matches);
return isset($matches[1]) ? $matches[1] : null;
}
foreach( new ReflectionMethod('C', 'methodA')->getParameters() as $param)
{
echo getClassName($param);
}
希望返回值只是 'Exception' 和 'array' 而不是 "Exception $a" 和 "array $id"。正则表达式应该是什么。致力于 php 5.3
只需使用反射类
foreach( (new ReflectionMethod('C', 'methodA'))->getParameters() as $param)
{
$class = $param->getClass();
if ($class) {
echo $class->getName()."\n";
} elseif ($param->isArray()) {
echo "array\n";
} else {
echo "unknown\n";
}
}
class C
{
function methodA(Exception $a, array $id){}
}
function getClassName(ReflectionParameter $param) {
$regex = '/\[([^\]]*)\]/';
preg_match($regex, $param->__toString(), $matches);
return isset($matches[1]) ? $matches[1] : null;
}
foreach( new ReflectionMethod('C', 'methodA')->getParameters() as $param)
{
echo getClassName($param);
}
希望返回值只是 'Exception' 和 'array' 而不是 "Exception $a" 和 "array $id"。正则表达式应该是什么。致力于 php 5.3
只需使用反射类
foreach( (new ReflectionMethod('C', 'methodA'))->getParameters() as $param)
{
$class = $param->getClass();
if ($class) {
echo $class->getName()."\n";
} elseif ($param->isArray()) {
echo "array\n";
} else {
echo "unknown\n";
}
}