ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# ReflectionParameter 获取函数或方法参数的相关信息 ## **ReflectionParameter取回了函数或方法参数的相关信息** ``` <pre class="calibre10">``` ReflectionParameter implements <span class="token4">Reflector</span> <span class="token3">{</span> <span class="token">/* 属性 */</span> public $name <span class="token3">;</span> <span class="token">//参数的名称。只读,在尝试赋值的时候会抛出 ReflectionException。</span> <span class="token">/* 方法 */</span> public allowsNull <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//检查是否允许null</span> public canBePassedByValue <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//返回此参数是否可以按值传递</span> final private __clone <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> void <span class="token">//克隆</span> public __construct <span class="token3">(</span> string $<span class="token5">function</span> <span class="token3">,</span> string $parameter <span class="token3">)</span> public static export <span class="token3">(</span> string $<span class="token5">function</span> <span class="token3">,</span> string $parameter <span class="token3">[</span><span class="token3">,</span> bool $<span class="token5">return</span> <span class="token3">]</span> <span class="token3">)</span> <span class="token3">:</span> string <span class="token">//导出</span> public getClass <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> ReflectionClass <span class="token">// 获得类型提示类。</span> public getDeclaringClass <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> ReflectionClass <span class="token">//获取声明类</span> public getDeclaringFunction <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> ReflectionFunctionAbstract <span class="token">//获取声明函数</span> public getDefaultValue <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> mixed <span class="token">//获取默认参数值</span> public getDefaultValueConstantName <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> string <span class="token">//如果默认值为常量或null,则返回默认值的常量名称</span> public getName <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> string <span class="token">//获取参数名称</span> public getPosition <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> int <span class="token">//获取参数位置</span> public getType <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> ReflectionType <span class="token">//获取参数的类型</span> public hasType <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//检查参数是否具有类型</span> public isArray <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//检查参数是否是数组</span> public isCallable <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//返回参数是否必须可调用</span> public isDefaultValueAvailable <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//检查是否有默认值。</span> public isDefaultValueConstant <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//返回此参数的默认值是否为常量</span> public isOptional <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//检查是否可选</span> public isPassedByReference <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//检查是否通过引用传递</span> public isVariadic <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> bool <span class="token">//检查参数是否为可变参数</span> public __toString <span class="token3">(</span> void <span class="token3">)</span> <span class="token3">:</span> string <span class="token">//被当做字符串调用时触发</span> <span class="token3">}</span> ``` ``` ## **例子:** ``` <pre class="calibre17">``` <span class="token1"><</span><span class="token1">?</span>php class <span class="token4">User</span><span class="token3">{</span> private $name<span class="token1">=</span><span class="token2">'张三'</span><span class="token3">;</span> private $age<span class="token1">=</span><span class="token2">'18'</span><span class="token3">;</span> <span class="token5">function</span> <span class="token4">getname</span><span class="token3">(</span><span class="token3">)</span><span class="token3">{</span> echo $this<span class="token1">-</span><span class="token1">></span>name<span class="token3">;</span> <span class="token3">}</span> protected <span class="token5">function</span> <span class="token4">getage</span><span class="token3">(</span><span class="token3">)</span><span class="token3">{</span> echo $this<span class="token1">-</span><span class="token1">></span>$age<span class="token3">;</span> <span class="token3">}</span> protected <span class="token5">function</span> <span class="token4">setInfo</span><span class="token3">(</span>$name<span class="token3">,</span>$age<span class="token3">)</span><span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span>age<span class="token1">=</span>$age<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>name<span class="token1">=</span>$name<span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token5">function</span> <span class="token4">set_info</span><span class="token3">(</span>$name<span class="token3">,</span>$age<span class="token3">)</span><span class="token3">{</span><span class="token3">}</span> echo <span class="token2">''</span><span class="token3">;</span> $method<span class="token1">=</span><span class="token5">new</span> <span class="token4">ReflectionMethod</span><span class="token3">(</span><span class="token2">'User'</span><span class="token3">,</span><span class="token2">'setInfo'</span><span class="token3">)</span><span class="token3">;</span> <span class="token">// 建立 Person这个类的反射类</span> $params<span class="token1">=</span>$method<span class="token1">-</span><span class="token1">></span><span class="token4">getParameters</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$params<span class="token3">)</span><span class="token3">;</span> <span class="token">/* array(2) { [0]=> object(ReflectionParameter)#6 (1) { ["name"]=> string(4) "name" } [1]=> object(ReflectionParameter)#7 (1) { ["name"]=> string(3) "age" } } */</span> $params1 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token4">array</span><span class="token3">(</span><span class="token2">'User'</span><span class="token3">,</span> <span class="token2">'setInfo'</span><span class="token3">)</span><span class="token3">,</span> <span class="token6">0</span><span class="token3">)</span><span class="token3">;</span> $params2 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token4">array</span><span class="token3">(</span><span class="token2">'User'</span><span class="token3">,</span> <span class="token2">'setInfo'</span><span class="token3">)</span><span class="token3">,</span> <span class="token2">'name'</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$params1<span class="token3">)</span><span class="token3">;</span> <span class="token">/* object(ReflectionParameter)#1 (1) { ["name"]=> string(4) "name" } */</span> $params2 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token4">array</span><span class="token3">(</span><span class="token2">'User'</span><span class="token3">,</span> <span class="token2">'setInfo'</span><span class="token3">)</span><span class="token3">,</span> <span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> $params2 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token4">array</span><span class="token3">(</span><span class="token2">'User'</span><span class="token3">,</span> <span class="token2">'setInfo'</span><span class="token3">)</span><span class="token3">,</span> <span class="token2">'age'</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$params2<span class="token3">)</span><span class="token3">;</span> <span class="token">/* object(ReflectionParameter)#2 (1) { ["name"]=> string(3) "age" } */</span> $p1 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token2">'set_info'</span><span class="token3">,</span> <span class="token6">0</span><span class="token3">)</span><span class="token3">;</span> $p1 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token2">'set_info'</span><span class="token3">,</span> <span class="token2">'name'</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$p1<span class="token3">)</span><span class="token3">;</span> <span class="token">/* object(ReflectionParameter)#3 (1) { ["name"]=> string(4) "name" } */</span> $p2 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token2">'set_info'</span><span class="token3">,</span> <span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> $p2 <span class="token1">=</span> <span class="token5">new</span> <span class="token4">ReflectionParameter</span><span class="token3">(</span><span class="token2">'set_info'</span><span class="token3">,</span> <span class="token2">'age'</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$p2<span class="token3">)</span><span class="token3">;</span> <span class="token">/* object(ReflectionParameter)#1 (1) { ["name"]=> string(3) "age" } */</span> ``` ```