我想通过ReflectionMethod访问这些方法:
$r = new ReflectionMethod($class, $method);
$params = $r->getParameters();
如果需要参数($ Option),请获取该方法的来源以准备参数:
public function GetFeedback($Options) {
$this->checkConnection();
return $this->_client->doGetFeedback(
$Options['feedback-from'],
$Options['feedback-to']
);
}
所以在我的例子中找到$ Option键 - 'feedback-from'和'feedback-to'
答案 0 :(得分:3)
假设有一个类
class Foo
{
public function GetFeedback($Options) {
$this->checkConnection();
return $this->_client->doGetFeedback(
$Options['feedback-from'],
$Options['feedback-to']
);
}
}
此代码将按照您的要求执行
$reflector = new ReflectionMethod('Foo', 'GetFeedback');
$methodBody = implode(
'',
iterator_to_array(
new LimitIterator(
new SplFileObject($reflector->getFileName()),
$reflector->getStartLine(),
$reflector->getEndLine() - $reflector->getStartLine()
)
)
);
foreach ($reflector->getParameters() as $parameter) {
if (!$parameter->isOptional()) {
preg_match_all(
sprintf('{\$%s\[[\'"](.*)[\'"]\]}', $parameter->getName()),
$methodBody,
$matches
);
}
print_r($matches);
}
Array
(
[0] => Array
(
[0] => $Options['feedback-from']
[1] => $Options['feedback-to']
)
[1] => Array
(
[0] => feedback-from
[1] => feedback-to
)
)
但是,此方法IMO的唯一有效用法是生成列出这些选项的文档块,并同意如果您在生产代码中需要这样做,则可能会出错。