好好爱自己!

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.

 

 

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

posted @ 2021-01-07 02:02  立志做一个好的程序员  阅读(189)  评论(0编辑  收藏  举报

不断学习创作,与自己快乐相处