ReflectionParameter クラス
(PHP 5, PHP 7, PHP 8)
はじめに
ReflectionParameter クラスは、 関数またはメソッドのパラメータに関する情報を取得します。
関数パラメータの内部を調べる際には、まず ReflectionFunction クラスまたは ReflectionMethod クラスのインスタンスを作成する必要があります。次に、 ReflectionFunctionAbstract::getParameters() メソッドを使ってパラメータの配列を取得します。
クラス概要
/* プロパティ */
/* メソッド */
}プロパティ
- name
-
パラメータ名。読み込み専用で、書き込もうとすると ReflectionException をスローします。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | ReflectionParameter::export() は、削除されました。 |
目次
- ReflectionParameter::allowsNull — null を許可するかどうかを調べる
- ReflectionParameter::canBePassedByValue — このパラメータが値渡し可能かどうかを返す
- ReflectionParameter::__clone — クローンする
- ReflectionParameter::__construct — コンストラクタ
- ReflectionParameter::export — エクスポートする
- ReflectionParameter::getAttributes — アトリビュートを取得する
- ReflectionParameter::getClass — リフレクションされた ReflectionClass を取得する。
- ReflectionParameter::getDeclaringClass — 宣言しているクラスを取得する
- ReflectionParameter::getDeclaringFunction — 宣言している関数を取得する
- ReflectionParameter::getDefaultValue — パラメータのデフォルト値を取得する
- ReflectionParameter::getDefaultValueConstantName — デフォルト値が定数あるいは null の場合に、その定数名を返す
- ReflectionParameter::getName — パラメータ名を取得する
- ReflectionParameter::getPosition — パラメータの位置を取得する
- ReflectionParameter::getType — 引数の型を取得する
- ReflectionParameter::hasType — 引数が型を持つかを調べる
- ReflectionParameter::isArray — 配列を受け取るパラメータであるかどうかを調べる
- ReflectionParameter::isCallable — パラメータが callable かどうかを返す
- ReflectionParameter::isDefaultValueAvailable — デフォルト値が存在するかどうかを調べる
- ReflectionParameter::isDefaultValueConstant — このパラメータのデフォルト値が定数かどうかを返す
- ReflectionParameter::isOptional — 省略可能であるかどうかを調べる
- ReflectionParameter::isPassedByReference — 参照渡しかどうかを調べる
- ReflectionParameter::isPromoted — Checks if a parameter is promoted to a property
- ReflectionParameter::isVariadic — 引数が可変長の個数であるかをチェックする
- ReflectionParameter::__toString — 文字列に変換する
+add a note
User Contributed Notes 4 notes
fgm at riff dot org ¶
16 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
?>
killgecNOFSPAM at gmail dot com ¶
17 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.
massimo at mmware dot it ¶
17 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"
rasmus at mindplay dot dk ¶
1 year 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