ホームページ  >  記事  >  バックエンド開発  >  PHPリフレクション(Reflection)の使用例_PHPチュートリアル

PHPリフレクション(Reflection)の使用例_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:53:44823ブラウズ

PHP Reflection の使用例

この記事では主に PHP Reflection の使用例を紹介します。この記事では、ReflectionClass、ReflectionExtension、ReflectionFunction、ReflectionMethod、ReflectionObject、ReflectionParameter などのクラスの使用例について説明します。必要な方はご参考ください。

PHP Reflectionは、クラス、拡張機能、メソッド、関数、オブジェクト、パラメータ、プロパティの詳細情報を取得するために使用されます。

ReflectionClassクラスは、属性、メソッド、ドキュメントコメントの取得など、クラス関連の情報を取得します。

?

拡張機能関連の情報を取得するためにReflectionExtensionクラスを使用します

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

クラスの人{

/**

* デモンストレーションのために、これを非公開に設定します

*/

private $_allowDynamicAttributes = false;

/**type=primary_autoincrement*/

保護された $id = 0;

/**タイプ=varchar 長さ=255 null*/

保護された $name;

/**type=text null*/

保護された $biography;

パブリック関数 getId()

{

$this->id;を返す

}

パブリック関数 setId($v)

{

$this->id = $v;

}

パブリック関数 getName()

{

$this->名前を返す;

}

パブリック関数 setName($v)

{

$this->名前 = $v;

}

パブリック関数 getBiography()

{

$this-> 経歴を返す;

}

パブリック関数 setBiography($v)

{

$this->略歴 = $v;

}

}

//クラスをエクスポートする

ReflectionClass::export('人');

$r = 新しい ReflectionClass('人');

//すべての属性を取得します

print_r($r->getProperties());

/**

* 指定された属性を取得します

* ReflectionProperty::IS_STATIC

* ReflectionProperty::IS_PUBLIC

* ReflectionProperty::IS_PROTECTED

* ReflectionProperty::IS_PRIVATE

*/

print_r($r->getProperties(ReflectionProperty::IS_PRIVATE));

//コメントを取得します

print_r($r->getProperty('id')->getDocComment());

//取得方法

print_r($r->getMethods());

1

2

3

4

5

6

7

8

9

10

11

12

13

14

$re = 新しい ReflectionExtension('Reflection');

print_r($re->getClasses()) //すべての拡張クラス

print_r($re->getClassNames()) //すべてのクラス名を展開します

$dom = 新しい ReflectionExtension('mysql');

print_r($dom->getConstants());//拡張定数

print_r($dom->getDependency());//この拡張機能は

に依存します

print_r($dom->getFunctions());//拡張メソッド

print_r($dom->getINIEntries());//拡張ini情報

print_r($dom->getName());//拡張機能名

print_r($dom->getVersion());//拡張バージョン

print_r($dom->info());//拡張情報

print_r($dom->isPersistent());//永続的な拡張機能かどうか

print_r($dom->isTemporary()) //一時的な拡張ですか

ReflectionFunction クラスを使用すると、関数関連の情報を取得できます

?

1

2

3

4

5

$rf = 新しい ReflectionFunction('array_merge');

foreach($rf->getParameters() as $item) {

echo $item .PHP_EOL;

}

ReflectionMethodクラスの利用者がメソッド関連情報を取得します

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

クラスの人{

パブリック $name;

/**

* 人の名前を取得します

*/

パブリック関数 getName()

{

$this->名前を返す;

}

パブリック関数 setName($v)

{

$this->名前 = $v;

}

}

$rm = 新しい ReflectionMethod('人', 'getName');

print_r($rm->isPublic());

print_r($rm->getDocComment());

オブジェクト関連の情報を取得するためにReflectionObjectクラスを使用します

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

クラスの人{

パブリック $name;

パブリック関数 __construct($name)

{

$this->name = $name;

}

パブリック関数 getName()

{

$this->名前を返す;

}

パブリック関数 setName($v)

{

$this->名前 = $v;

}

}

$a = 新しい人('a');

$ro = 新しい ReflectionObject($a);

print_r($ro->getMethods());

ReflectionParameter 関数またはメソッドのパラメータに関する情報を取得します。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

クラスの人{

パブリック $name;

パブリック関数 __construct($name)

{

$this->name = $name;

}

パブリック関数 getName()

{

$this->名前を返す;

}

パブリック関数 setName($v)

{

$this->名前 = $v;

}

}

$p = new ReflectionParameter(array('person', 'setName'), 0);

print_r($p->getPosition()); //0

print_r($p->getName()); //v

ReflectionProperty クラスのプロパティに関する情報を取得します。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

クラスの人{

/**テスト*/

パブリック $name;

パブリック関数 __construct($name)

{

$this->name = $name;

}

パブリック関数 getName()

{

$this->名前を返す;

}

パブリック関数 setName($v)

{

$this->名前 = $v;

}

}

$p = new ReflectionProperty('人', '名前');

print_r($p->getDocComment());

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1000099.html技術記事 PHP Reflection の使用例 この記事では主に PHP Reflection の使用例を紹介し、ReflectionClass、ReflectionExtension、ReflectionFunction、Reflec...について説明します
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。