PHP 8.5.8 Released!

ReflectionParameter 类

(PHP 5, PHP 7, PHP 8)

简介

ReflectionParameter 检索函数或方法参数的相关信息。

要自行检查函数的参数,首先创建 ReflectionFunction ReflectionMethod 的实例,然后使用它们的 ReflectionFunctionAbstract::getParameters() 方法来检索参数的数组。

类摘要

class ReflectionParameter implements Reflector {
/* 属性 */
public string $name ;
/* 方法 */
public function __construct (string |array |object $function, int |string $param)
public function allowsNull (): bool
public function canBePassedByValue (): bool
private function __clone (): void
public static function export (string $function, string $parameter, bool $return = ?): string
public function getAttributes (? string $name = null , int $flags = 0): array
#[\Deprecated]
public function getClass (): ? ReflectionClass
public function getDeclaringClass (): ? ReflectionClass
public function getDefaultValue (): mixed
public function getDefaultValueConstantName (): ? string
public function getName (): string
public function getPosition (): int
public function getType (): ? ReflectionType
public function hasType (): bool
#[\Deprecated]
public function isArray (): bool
#[\Deprecated]
public function isCallable (): bool
public function isDefaultValueAvailable (): bool
public function isDefaultValueConstant (): bool
public function isOptional (): bool
public function isPassedByReference (): bool
public function isPromoted (): bool
public function isVariadic (): bool
public function __toString (): string
}

属性

name

参数名。只读,在尝试赋值的时候会抛出 ReflectionException

更新日志

版本 说明
8.0.0 已移除 ReflectionParameter::export()

目录

发现了问题?

了解如何改进此页面提交拉取请求报告一个错误
+添加备注

用户贡献的备注 4 notes

up
7
fgm at riff dot org
18 years ago
The note about the signature of the ReflectionParameter constructor is actually incomplete, at least in 5.2.5: it is possible to use an integer for the second parameter, and the constructor will use it to return the n-th parameter.
This allows you to obtain proper ReflectionParameter objects even when documenting code from extensions which (strangely enough) define several parameters with the same name. The string-based constructor always returns the first parameter with the matching name, whereas the integer-based constructor correctly returns the n-th parameter.
So, in short, this works:
<?php
// supposing the extension defined something like:
// Some_Class::someMethod($a, $x, $y, $x, $y)
$p = new ReflectionParameter(array('Some_Class', 'someMethod'), 4);
// returns the last parameter, whereas
$p = new ReflectionParameter(array('Some_Class', 'someMethod'), 'y');
// always returns the first $y at position 2
?>
up
3
killgecNOFSPAM at gmail dot com
18 years ago
Signature of constructor of ReflectionParameter correctly is:
public function __construct(array/string $function, string $name);
where $function is either a name of a global function, or a class/method name pair.
up
1
massimo at mmware dot it
18 years ago
I found these limitations using class ReflectionParameter from ReflectionFunction with INTERNAL FUNCTIONS (eg print_r, str_replace, ... ) :
1. parameter names don't match with manual: (try example 19.35 with arg "call_user_func" )
2. some functions (eg PCRE function, preg_match etc) have EMPTY parameter names 
3. calling getDefaultValue on Parameters will result in Exception "Cannot determine default value for internal functions"
up
0
rasmus at mindplay dot dk
2 years ago
There are so many parameter modes now, and I needed to know exactly what `ReflectionParameter` is going to return, so I wrote a little test-script - you can find the script and results in a table here:
https://gist.github.com/mindplay-dk/082458088988e32256a827f9b7491e17 
+添加备注

AltStyle によって変換されたページ (->オリジナル) /