php 反射的用法,用来获取源码未知的类具有的方法
参考: 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.
——————————————————————————————————————