このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| 
                    psr:psr5 [2020/05/18 16:57] y2sunlight [キーワード]  | 
                
                    psr:psr5 [2020/09/01 11:52] (現在) tanaka [PSR-5: PHPDoc Standard(Draft)]  | 
            ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | > | ||
| - | |||
| - | ----- | ||
| - | |||
| ====== PSR-5: PHPDoc Standard(Draft) ====== | ====== PSR-5: PHPDoc Standard(Draft) ====== | ||
|  --- // |  --- // | ||
| - | 本章は、若干の補足を加筆してはいるものの単に[[https:// | + | 本章は、若干の補足を加筆してはいるものの単に[[https:// | 
| + | |||
| + | 関連記事 | ||
| - | ==== 目次 ==== | + |    | 
| - |    | + | |
|   * [[psr: |   * [[psr: | ||
|   * [[psr: |   * [[psr: | ||
| 行 16: | 行 13: | ||
| * PSR-5: PHPDoc Standard(Draft) - PHPDoc規約 | * PSR-5: PHPDoc Standard(Draft) - PHPDoc規約 | ||
|   * [[psr: |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| + |   * [[psr: | ||
| \\ | \\ | ||
| 行 411: | 行 418: | ||
| ===== 付録A. タイプ ====== | ===== 付録A. タイプ ====== | ||
| - | ===== ABNF ===== | + | ==== ABNF ==== | 
| タイプには次の[[https:// | タイプには次の[[https:// | ||
| 行 427: | 行 434: | ||
| \\ | \\ | ||
| - | ===== 詳細  | + | ==== 詳細 ==== | 
| '' | '' | ||
| 行 446: | 行 453: | ||
| \\ | \\ | ||
| - | ===== 配列  | + | ==== 配列 ==== | 
| '' | '' | ||
| 行 456: | 行 463: | ||
| \\ | \\ | ||
| - | ===== 有効なクラス名  | + | ==== 有効なクラス名 ==== | 
| 有効なクラス名は、タイプが言及しているコンテキストに基づいて参照されます。従って、これは完全修飾クラス名(FQCN)であるか。または名前空間内に存在ローカル名であるかのいずれかになります。 | 有効なクラス名は、タイプが言及しているコンテキストに基づいて参照されます。従って、これは完全修飾クラス名(FQCN)であるか。または名前空間内に存在ローカル名であるかのいずれかになります。 | ||
| 行 470: | 行 477: | ||
| \\ | \\ | ||
| - | ===== キーワード  | + | ==== キーワード ==== | 
| キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が '' | キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が '' | ||
| 行 487: | 行 494: | ||
| - **object**:のタイプが適用される要素は、未定義クラスのインスタンスです。\\ \\ | - **object**:のタイプが適用される要素は、未定義クラスのインスタンスです。\\ \\ | ||
| - **array**:このタイプが適用される要素は値の配列です。\\ \\ | - **array**:このタイプが適用される要素は値の配列です。\\ \\ | ||
| - | - **iterable**:この型が適用される要素は、PHPの定義による配列またはTraversableオブジェクトです。\\ \\ | + |   - **iterable**:この型が適用される要素は、PHPの定義による配列(array)  | 
| - **resource**:このタイプが適用される要素は、PHPの定義によるリソースです。\\ \\ | - **resource**:このタイプが適用される要素は、PHPの定義によるリソースです。\\ \\ | ||
| - **mixed**:このタイプが適用される要素は、ここで指定された任意のタイプにすることができます。コンパイル時にどのタイプが使用されるかは不明です。\\ \\ | - **mixed**:このタイプが適用される要素は、ここで指定された任意のタイプにすることができます。コンパイル時にどのタイプが使用されるかは不明です。\\ \\ | ||
| - | - **void**:このタイプは通常、メソッドまたは関数の戻り値のタイプを定義するときにのみ使用され、「何も返されない」ことを示します。したがって、ユーザーは戻り値に頼る頼るべきではありません。\\ \\ **例1:**<code php> | + | - **void**:このタイプは通常、メソッドまたは関数の戻り値のタイプを定義するときにのみ使用され、「何も返されない」ことを示します。したがって、ユーザーは戻り値に頼る頼るべきではありません。\\ \\ **例1:**<code php> | 
| /** | /** | ||
| * @return void | * @return void | ||
| 行 498: | 行 505: | ||
|     echo 'Hello world'; |     echo 'Hello world'; | ||
| } | } | ||
| - | </ | + | </ | 
| /** | /** | ||
| * @param bool $quiet when true 'Hello world' is echo-ed. | * @param bool $quiet when true 'Hello world' is echo-ed. | ||
| 行 511: | 行 518: | ||
|     echo 'Hello world'; |     echo 'Hello world'; | ||
| } | } | ||
| - | </ | + | </ | 
| - | - **null**:このタイプが適用される要素は **NULL** 値であり、技術的には存在しません。\\ \\ voidとの大きな違いは、このタイプは、記述された要素がいつでも明示的な **NULL** 値を含む可能性があるあらゆる状況で使用されるということです。\\ \\ **例1:** \\ \\ <code php> | + | - **null**:このタイプが適用される要素は **NULL** 値であるか、さもなくば技術的には存在しません。\\ \\ voidとの大きな違いは、このタイプは、記述された要素がいつでも明示的な **NULL** 値を含む可能性があるあらゆる状況で使用されるということです。\\ \\ **例1:** \\ \\ <code php> | 
| /** | /** | ||
| * @return null | * @return null | ||
| 行 521: | 行 528: | ||
| return null; | return null; | ||
| } | } | ||
| - | </ | + | </ | 
| /** | /** | ||
| * @param bool $create_new When true returns a new stdClass. | * @param bool $create_new When true returns a new stdClass. | ||
| 行 534: | 行 541: | ||
| return null; | return null; | ||
| } | } | ||
| - | </ | + | </ | 
| + |   - **callable**:このタイプが適用される要素は、関数呼び出しへのポインターです。これは、PHPの定義による呼び出し可能('' | ||
| + |   - **self**:この型が適用される要素は、ドキュメント化された要素がもともと含まれていたのと同じクラスです。< | ||
| + | === 例: === | ||
| + | > メソッド c はクラス A に含まれています。**DocBlock** は、戻り値の型が **self** であることを示しています。そのため、メソッド c はクラス A のインスタンスを返します。 | ||
| + | |||
| + | これは、継承が関与しているときに混乱する状況につながる可能性があります。 | ||
| + | |||
| + | === 例(前の例の状況が引き続き適用されます): === | ||
| + | |||
| + | > クラス B はクラス A を拡張し、メソッドcを再定義しません。そのため、クラス B からメソッド c を呼び出すことができます。 | ||
| + | |||
| + | この状況では、**self** がクラス A または B のいづれかとして解釈されるため、あいまいさが生じる可能性があります。これらの場合、**self** は、**self** タイプを含む **DocBlock** が記述されているクラスのインスタンスであると解釈しなければなりません ('' | ||
| + | |||
| + | 上記の例で、**self** はクラス A のメソッド c で定義されているため、常にクラスAを参照する必要があります('' | ||
| + | |||
| + | > 上記の性質により、この情報を収集し形成化するアプリケーションでは、クラスの各表現とともに子クラスのリストを表示することをお勧めします ('' | ||
| + | </ | ||
| + |   - **static**:この型が適用される要素は、ドキュメント化された要素が含まれているのと同じクラスであるか、またはサブクラスで見つかった場合、元のクラスではなくそのサブクラスの型です。\\ \\ このキーワードは、PHPで定義されている(静的メソッドやプロパティ、または変数修飾子でもない)[[https:// | ||
| + |   - **$this**:このタイプが適用される要素は、与えられたコンテキストの現在のクラスとまったく同じインスタンスです。そのため、返されるインスタンスは同じクラスだけでなく同じインスタンスでなければならないので、このタイプは static のより厳密なバージョンという事になります。\\ \\ このタイプは、[[https:// | ||
| \\ | \\ | ||