このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| 
                    psr:psr5 [2020/05/18 15: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: | ||
| \\ | \\ | ||
| - | ===== キーワード  | + | ==== キーワード ==== | 
| キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が '' | キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が '' | ||
| 行 481: | 行 488: | ||
| このPSRによって認識されるキーワードは次の通りです: | このPSRによって認識されるキーワードは次の通りです: | ||
| - | - **bool**:このタイプが適用される要素の状態は **TRUE** または **FALSE** だけです。 | + | - **bool**:このタイプが適用される要素の状態は **TRUE** または **FALSE** だけです。\\ \\ | 
| - | - **int**: このタイプが適用される要素は、符号無し整数(a whole number)または符号付き整数(integer)です。 | + | - **int**: このタイプが適用される要素は、符号無し整数または符号付き整数です。\\ \\ | 
| - |   - **float**:このタイプが適用される要素は、実数(continuous, | + | - **float**:このタイプが適用される要素は、実数です。\\ \\ | 
| - | - **string**:このタイプが適用される要素は、2進文字列です(a string of binary characters)。 | + | - **string**:このタイプが適用される要素は、2進文字列です。\\ \\ | 
| - | - **object**:のタイプが適用される要素は、未定義クラスのインスタンスです。 | + | - **object**:のタイプが適用される要素は、未定義クラスのインスタンスです。\\ \\ | 
| - | - **array**:このタイプが適用される要素は値の配列です。 | + | - **array**:このタイプが適用される要素は値の配列です。\\ \\ | 
| - | - **iterable**:この型が適用される要素は、PHPの定義による配列(array)またはTraversableオブジェクトです。 | + |   - **iterable**:この型が適用される要素は、PHPの定義による配列(array) または  | 
| - | - **resource**:このタイプが適用される要素は、PHPの定義によるリソース(resource)です。 | + | - **resource**:このタイプが適用される要素は、PHPの定義によるリソースです。\\ \\ | 
| - | - **mixed**:このタイプが適用される要素は、ここで指定された任意のタイプにすることができます。コンパイル時にどのタイプが使用されるかは不明です。 | + | - **mixed**:このタイプが適用される要素は、ここで指定された任意のタイプにすることができます。コンパイル時にどのタイプが使用されるかは不明です。\\ \\ | 
| - | - **void**:このタイプは通常、メソッドまたは関数の戻り値のタイプを定義するときにのみ使用され、「何も返されない」ことを示します。したがって、ユーザーは戻り値に頼る頼るべきではありません。 | + |   - **void**:このタイプは通常、メソッドまたは関数の戻り値のタイプを定義するときにのみ使用され、「何も返されない」ことを示します。したがって、ユーザーは戻り値に頼る頼るべきではありません。\\ \\ **例1:**< | 
| + | /** | ||
| + | * @return void | ||
| + | */ | ||
| + | function outputHello() | ||
| + | { | ||
| + |     echo 'Hello world'; | ||
| + | } | ||
| + | </ | ||
| + | /** | ||
| + | * @param bool $quiet when true 'Hello world' is echo-ed. | ||
| + | * | ||
| + | * @return void | ||
| + | */ | ||
| + | function outputHello($quiet) | ||
| + | { | ||
| + | if ($quiet) { | ||
| + | return; | ||
| + | } | ||
| + |     echo 'Hello world'; | ||
| + | } | ||
| + | </ | ||
| + | - **null**:このタイプが適用される要素は **NULL** 値であるか、さもなくば技術的には存在しません。\\ \\ voidとの大きな違いは、このタイプは、記述された要素がいつでも明示的な **NULL** 値を含む可能性があるあらゆる状況で使用されるということです。\\ \\ **例1:** \\ \\ <code php> | ||
| + | /** | ||
| + | * @return null | ||
| + | */ | ||
| + | function foo() | ||
| + | { | ||
| + |     echo 'Hello world'; | ||
| + | return null; | ||
| + | } | ||
| + | </ | ||
| + | /** | ||
| + | * @param bool $create_new When true returns a new stdClass. | ||
| + | * | ||
| + | * @return stdClass|null | ||
| + | */ | ||
| + | function foo($create_new) | ||
| + | { | ||
| + | if ($create_new) { | ||
| + |         return new stdClass(); | ||
| + | } | ||
| + | return null; | ||
| + | } | ||
| + | </ | ||
| + |   - **callable**:このタイプが適用される要素は、関数呼び出しへのポインターです。これは、PHPの定義による呼び出し可能('' | ||
| + |   - **self**:この型が適用される要素は、ドキュメント化された要素がもともと含まれていたのと同じクラスです。< | ||
| + | === 例: === | ||
| + | > メソッド c はクラス A に含まれています。**DocBlock** は、戻り値の型が **self** であることを示しています。そのため、メソッド c はクラス A のインスタンスを返します。 | ||
| - | <div indent> | + | これは、継承が関与しているときに混乱する状況につながる可能性があります。 | 
| - | <div indent> | + | |
| - | === Example 1: === | + | === 例(前の例の状況が引き続き適用されます):  | 
| - | <code php> | + | |
| - | </ | + | |
| - | TODO: | + | > クラス B はクラス A を拡張し、メソッドcを再定義しません。そのため、クラス B からメソッド c を呼び出すことができます。 | 
| - | === Example 1: === | + | この状況では、**self** がクラス A または B のいづれかとして解釈されるため、あいまいさが生じる可能性があります。これらの場合、**self** は、**self** タイプを含む **DocBlock** が記述されているクラスのインスタンスであると解釈しなければなりません ('' | 
| - | <code php> | + | |
| - | </ | + | |
| - | TODO: | + | 上記の例で、**self** はクラス A のメソッド c で定義されているため、常にクラスAを参照する必要があります('' | 
| + | > 上記の性質により、この情報を収集し形成化するアプリケーションでは、クラスの各表現とともに子クラスのリストを表示することをお勧めします ('' | ||
| </ | </ | ||
| - | </div> | + |   - **static**:この型が適用される要素は、ドキュメント化された要素が含まれているのと同じクラスであるか、またはサブクラスで見つかった場合、元のクラスではなくそのサブクラスの型です。\\ \\ このキーワードは、PHPで定義されている(静的メソッドやプロパティ、または変数修飾子でもない)[[https: | 
| + |   - **$this**:このタイプが適用される要素は、与えられたコンテキストの現在のクラスとまったく同じインスタンスです。そのため、返されるインスタンスは同じクラスだけでなく同じインスタンスでなければならないので、このタイプは static のより厳密なバージョンという事になります。\\ \\ このタイプは、[[https:// | ||
| \\ | \\ | ||