ホームページ バックエンド開発 PHPチュートリアル PHP リフレクション メカニズムを使用して関数ドキュメントを取得する

PHP リフレクション メカニズムを使用して関数ドキュメントを取得する

May 01, 2020 am 09:19 AM
php

反射 Reflection

反射可以简单理解为扫描类的属性、方法和注释的能力。

用法

PHP 为我们提供了丰富的方法,使我们可以方便的使用。

1

2

3

4

$reflect = new ReflectionClass('App\Foo');

$reflect->getMethods(); // 获取方法的数组

$reflect->getDocComment(); // 获取文档注释

……

ログイン後にコピー

应用

有时系统需要向用户提供内置方法文档说明来使用,那么我们则可以通过 PHP 反射实现。

创建内置函数类

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

class FooFunction{

    /**

     * 获取当前周周一时间戳

     *

     * @return false|string

     */

    public static function mondayTimeStamp(){

        $targetTime = strtotime('now');

        $w = date('w', $targetTime);

        $w = ($w == 0 ? 7 : $w);

        return mktime(0,0,0, date('m', $targetTime), date('d', $targetTime)-($w-1), date('Y', $targetTime));

    }

    /**

     * 获取当前周周一日期

     *

     * @return false|string

     */

    public static function mondayDate(){

        return date('Y-m-d', self::mondayTimeStamp());

    }

}

ログイン後にコピー

扫描内置函数类,生成文档

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 利用 PHP 反射

$reflect = new ReflectionClass('FooFunction');

$data = [];

// 获取类中的方法

$methods = $reflect->getMethods();

foreach ($methods as $method){

    $methodName = $method->getName();

    $methodDocStr = $reflect->getMethod($methodName)->getDocComment();

    // 过滤方法注释前面的(*)

    $pattern = "/[@a-zA-Z\\x{4e00}-\\x{9fa5}]+.*/u";

    preg_match_all($pattern, $methodDocStr, $matches, PREG_PATTERN_ORDER);

    $data[] = [

        'name' => $methodName,

        'doc' => $matches[0]

    ];

}

echo json_encode($data);

ログイン後にコピー

结果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[

    {

        "name": "mondayTimeStamp",

        "doc": [

            "返回当前周周一时间戳",

            "@return false|string"

        ]

    },

    {

        "name": "mondayDate",

        "doc": [

            "返回当前周周一日期",

            "@return false|string"

        ]

    }

]

ログイン後にコピー

      推荐教程:《PHP教程

以上がPHP リフレクション メカニズムを使用して関数ドキュメントを取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles