🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **ReflectionParameter取回了函数或方法参数的相关信息** ``` ReflectionParameter implements Reflector { /* 属性 */ public $name ; //参数的名称。只读,在尝试赋值的时候会抛出 ReflectionException。 /* 方法 */ public allowsNull ( void ) : bool //检查是否允许null public canBePassedByValue ( void ) : bool //返回此参数是否可以按值传递 final private __clone ( void ) : void //克隆 public __construct ( string $function , string $parameter ) public static export ( string $function , string $parameter [, bool $return ] ) : string //导出 public getClass ( void ) : ReflectionClass // 获得类型提示类。 public getDeclaringClass ( void ) : ReflectionClass //获取声明类 public getDeclaringFunction ( void ) : ReflectionFunctionAbstract //获取声明函数 public getDefaultValue ( void ) : mixed //获取默认参数值 public getDefaultValueConstantName ( void ) : string //如果默认值为常量或null,则返回默认值的常量名称 public getName ( void ) : string //获取参数名称 public getPosition ( void ) : int //获取参数位置 public getType ( void ) : ReflectionType //获取参数的类型 public hasType ( void ) : bool //检查参数是否具有类型 public isArray ( void ) : bool //检查参数是否是数组 public isCallable ( void ) : bool //返回参数是否必须可调用 public isDefaultValueAvailable ( void ) : bool //检查是否有默认值。 public isDefaultValueConstant ( void ) : bool //返回此参数的默认值是否为常量 public isOptional ( void ) : bool //检查是否可选 public isPassedByReference ( void ) : bool //检查是否通过引用传递 public isVariadic ( void ) : bool //检查参数是否为可变参数 public __toString ( void ) : string //被当做字符串调用时触发 } ``` ## **例子:** ``` <?php class User{ private $name='张三'; private $age='18'; function getname(){ echo $this->name; } protected function getage(){ echo $this->$age; } protected function setInfo($name,$age){ $this->age=$age; $this->name=$name; } } function set_info($name,$age){} echo '<pre>'; $method=new ReflectionMethod('User','setInfo'); // 建立 Person这个类的反射类 $params=$method->getParameters(); var_dump($params); /* array(2) { [0]=> object(ReflectionParameter)#6 (1) { ["name"]=> string(4) "name" } [1]=> object(ReflectionParameter)#7 (1) { ["name"]=> string(3) "age" } } */ $params1 = new ReflectionParameter(array('User', 'setInfo'), 0); $params2 = new ReflectionParameter(array('User', 'setInfo'), 'name'); var_dump($params1); /* object(ReflectionParameter)#1 (1) { ["name"]=> string(4) "name" } */ $params2 = new ReflectionParameter(array('User', 'setInfo'), 1); $params2 = new ReflectionParameter(array('User', 'setInfo'), 'age'); var_dump($params2); /* object(ReflectionParameter)#2 (1) { ["name"]=> string(3) "age" } */ $p1 = new ReflectionParameter('set_info', 0); $p1 = new ReflectionParameter('set_info', 'name'); var_dump($p1); /* object(ReflectionParameter)#3 (1) { ["name"]=> string(4) "name" } */ $p2 = new ReflectionParameter('set_info', 1); $p2 = new ReflectionParameter('set_info', 'age'); var_dump($p2); /* object(ReflectionParameter)#1 (1) { ["name"]=> string(3) "age" } */ ```