このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| 
                    psr:psr5 [2020/05/18 14:41] 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**  | + | - **bool**:このタイプが適用される要素の状態は **TRUE** または **FALSE** だけです。\\ \\ | 
| - | - TODO: | + | - **int**: このタイプが適用される要素は、符号無し整数または符号付き整数です。\\ \\ | 
| - | - TODO: | + | - **float**:このタイプが適用される要素は、実数です。\\ \\ | 
| - | - TODO: | + | - **string**:このタイプが適用される要素は、2進文字列です。\\ \\ | 
| - | - TODO: | + | - **object**:のタイプが適用される要素は、未定義クラスのインスタンスです。\\ \\ | 
| - | - TODO: | + | - **array**:このタイプが適用される要素は値の配列です。\\ \\ | 
| + |   - **iterable**:この型が適用される要素は、PHPの定義による配列(array) または '' | ||
| + | - **resource**:このタイプが適用される要素は、PHPの定義によるリソースです。\\ \\ | ||
| + | - **mixed**:このタイプが適用される要素は、ここで指定された任意のタイプにすることができます。コンパイル時にどのタイプが使用されるかは不明です。\\ \\ | ||
| + |   - **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 のインスタンスを返します。 | ||
| - | 1. bool: the element to which this type applies only has state TRUE or FALSE. | + | これは、継承が関与しているときに混乱する状況につながる可能性があります。 | 
| - | bool:このタイプが適用される要素の状態はTRUEまたはFALSEのみです。 | + | |
| - | 2. int: the element to which this type applies is a whole number or integer. | + | === 例(前の例の状況が引き続き適用されます): === | 
| - | int:このタイプが適用される要素は、整数または整数です。 | + | |
| - | 3. float: the element to which this type applies is a continuous, or real, number. | + | > クラス B はクラス  | 
| - | float:このタイプが適用される要素は、連続した、または実数です。 | + | |
| - | + | ||
| - | 4. string: the element to which this type applies is a string of binary characters. | + | |
| - | string:このタイプが適用される要素は、バイナリ文字の文字列です。 | + | |
| - | + | ||
| - | 5. object: the element to which this type applies is the instance of an undetermined class. | + | |
| - | オブジェクト:このタイプが適用される要素は、未決定のクラスのインスタンスです。 | + | |
| - | + | ||
| - | 6. array: the element to which this type applies is an array of values. | + | |
| - | array:このタイプが適用される要素は値の配列です。 | + | |
| - | + | ||
| - | 7. iterable: the element to which this type applies is an array or Traversable object per the definition of PHP. | + | |
| - | iterable:この型が適用される要素は、PHPの定義による配列またはTraversableオブジェクトです。 | + | |
| - | + | ||
| - | 8. resource: the element to which this type applies is a resource per the definition of PHP. | + | |
| - | resource:このタイプが適用される要素は、PHPの定義によるリソースです。 | + | |
| - | + | ||
| - | 9. mixed: the element to which this type applies can be of any type as specified here. It is not known at compile time which type will be used. | + | |
| - | 混合:このタイプが適用される要素は、ここで指定された任意のタイプにすることができます。コンパイル時にどのタイプが使用されるかは不明です。 | + | |
| - | + | ||
| - | 10. void: this type is commonly only used when defining the return type of a method or function, indicating " | + | |
| - | void:このタイプは通常、メソッドまたは関数の戻り値のタイプを定義するときにのみ使用され、「何も返されない」ことを示します。したがって、ユーザーは戻り値に依存しないでください。 | + | |
| + | この状況では、**self** がクラス A または B のいづれかとして解釈されるため、あいまいさが生じる可能性があります。これらの場合、**self** は、**self** タイプを含む **DocBlock** が記述されているクラスのインスタンスであると解釈しなければなりません ('' | ||
| + | 上記の例で、**self** はクラス A のメソッド c で定義されているため、常にクラスAを参照する必要があります('' | ||
| + | > 上記の性質により、この情報を収集し形成化するアプリケーションでは、クラスの各表現とともに子クラスのリストを表示することをお勧めします ('' | ||
| + | </ | ||
| + |   - **static**:この型が適用される要素は、ドキュメント化された要素が含まれているのと同じクラスであるか、またはサブクラスで見つかった場合、元のクラスではなくそのサブクラスの型です。\\ \\ このキーワードは、PHPで定義されている(静的メソッドやプロパティ、または変数修飾子でもない)[[https:// | ||
| + |   - **$this**:このタイプが適用される要素は、与えられたコンテキストの現在のクラスとまったく同じインスタンスです。そのため、返されるインスタンスは同じクラスだけでなく同じインスタンスでなければならないので、このタイプは static のより厳密なバージョンという事になります。\\ \\ このタイプは、[[https:// | ||
| \\ | \\ | ||