ReflectionProperty クラス
(PHP 5, PHP 7, PHP 8)
はじめに
ReflectionProperty クラスは クラスのプロパティについての情報を報告します。
クラス概要
プロパティ
- name
-
プロパティ名。読み込み専用で、書き込もうとすると ReflectionException をスローします。
- class
-
プロパティが定義されているクラス名。読み込み専用で、書き込もうとすると ReflectionException をスローします。
定義済み定数
ReflectionProperty の修飾子
ReflectionProperty::IS_STATIC
-
static プロパティを示します。 PHP 7.4.0 より前のバージョンでは、この値は
1
でした。 ReflectionProperty::IS_READONLY
-
readonly プロパティを示します。 PHP 8.1.0 以降で利用可能です。
ReflectionProperty::IS_PUBLIC
-
public プロパティを示します。 PHP 7.4.0 より前のバージョンでは、この値は
256
でした。 ReflectionProperty::IS_PROTECTED
-
protected プロパティを示します。 PHP 7.4.0 より前のバージョンでは、この値は
512
でした。 ReflectionProperty::IS_PRIVATE
-
private プロパティを示します。 PHP 7.4.0 より前のバージョンでは、この値は
1024
でした。
注意:
これらの定数の値は、PHP のバージョンが異なると変更される可能性があります。 これらの値を直接用いず、常に定数を使うことを推奨します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | ReflectionProperty::export() は、削除されました。 |
目次
- ReflectionProperty::__clone — クローンする
- ReflectionProperty::__construct — ReflectionProperty オブジェクトを作成する
- ReflectionProperty::export — エクスポートする
- ReflectionProperty::getAttributes — アトリビュートを取得する
- ReflectionProperty::getDeclaringClass — 宣言しているクラスを取得する
- ReflectionProperty::getDefaultValue — プロパティで宣言されたデフォルト値を返す
- ReflectionProperty::getDocComment — プロパティのドキュメントコメントを取得する
- ReflectionProperty::getModifiers — プロパティの修飾子を取得する
- ReflectionProperty::getName — プロパティ名を取得する
- ReflectionProperty::getType — プロパティの型を取得する
- ReflectionProperty::getValue — 値を取得する
- ReflectionProperty::hasDefaultValue — デフォルト値が宣言されているかをチェックする
- ReflectionProperty::hasType — プロパティが型を持つかをチェックする
- ReflectionProperty::isDefault — デフォルトプロパティであるかどうかを調べる
- ReflectionProperty::isInitialized — プロパティが初期化されているかをチェックする
- ReflectionProperty::isPrivate — private プロパティであるかどうかを調べる
- ReflectionProperty::isPromoted — プロパティがコンストラクタの引数から昇格したものかを調べる
- ReflectionProperty::isProtected — protected プロパティであるかどうかを調べる
- ReflectionProperty::isPublic — public プロパティであるかどうかを調べる
- ReflectionProperty::isReadOnly — プロパティが readonly かを調べる
- ReflectionProperty::isStatic — staticプロパティであるかどうかを調べる
- ReflectionProperty::setAccessible — プロパティのアクセス範囲を設定する
- ReflectionProperty::setValue — プロパティの値を設定する
- ReflectionProperty::__toString — 文字列に変換する
User Contributed Notes 1 note
I think a more accurate explanation is this:
The Reflection classes are designed to reflect upon the source code of an application, not on any runtime information.
I think you misunderstand the ReflectionProperty constructor in your example above. The fact that it accepts an object as argument is just a convenience feature - you are actually inspecting the class of that object, not the object itself, so it's basically equivalent to:
<?php
// works fine
$Reflection = new ReflectionProperty(get_class($a), 'a');
// throws exception
$Reflection = new ReflectionProperty(get_class($a), 'foo');
?>
Getting the class of the object you're passing in is implied, since inspecting a defined property is the purpose of this class.
In your example, $a->foo is a dynamic member - it is not defined as a member of class, so there is no defining class reference, line number, default value, etc. - which means, there is nothing to reflect upon.
Clearly this very useful library could use some real documentation...