参考: https://www.cnblogs.com/fps2tao/p/10393755.html
1. 用途1,获取源代码未知的类的方法: 如class Redis 有哪些方法?
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo $redis->ping();
$redis->set('fly', 'zzzzz');
echo $redis->get('fly');
$reflection = new ReflectionClass('Redis');
$m = $reflection->getMethods();
var_dump($m);
2. 用途2, 获取方法的可选参数,及其默认值。
<?php
class A {
public function say($name, $age = 12) {
}
}
$a = new A();
$reflectionObj = new ReflectionMethod($a, 'say');
$params = $reflectionObj->getParameters();
foreach($params as $p) {
if ($p->isOptional()) { // 或使用isDefaultValueAvailable, 检测是否有可用的默认值
$paramVal = $p->getDefaultValue();
var_dump($p->getName());
var_dump($paramVal);
}
}
上面的$age 就是optional参数(可选参数,非必填参数), 其默认值为12.

——————————————————————————————————————