このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 最新のリビジョン 両方とも次のリビジョン | ||
psr:psr5 [2020/05/18 14:33] y2sunlight [Arrays] |
psr:psr5 [2020/09/01 10:11] y2sunlight |
||
---|---|---|---|
行 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: | ||
\\ | \\ | ||
- | ===== 配列 | + | ==== 配列 ==== |
'' | '' | ||
- | - 指定されない場合: 表現された配列の内容の定義を与えない。\\ \\ 例:< | + | - 指定されない場合: 表現された配列の内容の定義を与えない。\\ \\ 例:< |
- | - 単一のタイプを含んでいる指定: タイプ定義は、各配列値のタイプを読者に通知します。 その場合、与えられた配列の各値に対して1つのタイプのみが期待されます。\\ \\ 例:< | + | - 単一のタイプを含んでいる指定: タイプ定義は、各配列値のタイプを読者に通知します。 その場合、与えられた配列の各値に対して1つのタイプのみが期待されます。\\ \\ 例:< |
- | - 複数のタイプを含んでいる指定: タイプ定義は、各配列値のタイプを読者に通知します。 各値は、指定されたタイプのいずれかになります。\\ \\ 例<code php> | + | - 複数のタイプを含んでいる指定: タイプ定義は、各配列値のタイプを読者に通知します。 各値は、指定されたタイプのいずれかになります。\\ \\ 例<code php> |
\\ | \\ | ||
- | ===== 有効なクラス名 | + | ==== 有効なクラス名 ==== |
有効なクラス名は、タイプが言及しているコンテキストに基づいて参照されます。従って、これは完全修飾クラス名(FQCN)であるか。または名前空間内に存在ローカル名であるかのいずれかになります。 | 有効なクラス名は、タイプが言及しているコンテキストに基づいて参照されます。従って、これは完全修飾クラス名(FQCN)であるか。または名前空間内に存在ローカル名であるかのいずれかになります。 | ||
行 470: | 行 477: | ||
\\ | \\ | ||
- | ===== キーワード | + | ==== キーワード ==== |
キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が '' | キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が '' | ||
===注意:=== | ===注意:=== | ||
- | > これらのキーワードのほとんどは、PHPでクラス名として使用でき、実際のクラスと区別するのが難しい場合があります | + | > これらのキーワードのほとんどは、PHPでクラス名として使用でき、実際のクラスと区別するのが難しい場合があります。そのため、ほとんどのクラス名は大文字の最初の文字で始まるため、キーワードは小文字にする必要があります ('' |
- | > TODO: | + | >これらのキーワードの名前でクラスに名前を付けない理由は他にもありますが、それは本仕様の範囲を超えています。 |
+ | このPSRによって認識されるキーワードは次の通りです: | ||
- | Most of these keywords are allowed as class names in PHP and can be hard to distinguish from real classes. As such, the keywords MUST be lowercase, as most class names start with an uppercase first character, and you SHOULD NOT use classes with these names in your code. | + | - **bool**:このタイプが適用される要素の状態は **TRUE** または **FALSE** だけです。\\ \\ |
+ | - **int**: このタイプが適用される要素は、符号無し整数または符号付き整数です。\\ \\ | ||
+ | - **float**:このタイプが適用される要素は、実数です。\\ \\ | ||
+ | - **string**:このタイプが適用される要素は、2進文字列です。\\ \\ | ||
+ | - **object**:のタイプが適用される要素は、未定義クラスのインスタンスです。\\ \\ | ||
+ | - **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'; | ||
+ | } | ||
+ | </code> | ||
+ | - **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 のインスタンスを返します。 | ||
- | 。 そのため、ほとんどのクラス名は大文字の最初の文字で始まるため、キーワードは小文字にする必要があります。コード内でこれらの名前のクラスを使用してはなりません。 | + | これは、継承が関与しているときに混乱する状況につながる可能性があります。 |
- | There are more reasons to not name classes with the names of these keywords, but that falls beyond the scope of this specification. | + | === 例(前の例の状況が引き続き適用されます): === |
- | これらのキーワードの名前でクラスに名前を付けない理由は他にもありますが、それはこの仕様の範囲を超えています。 | + | > クラス |
+ | この状況では、**self** がクラス A または B のいづれかとして解釈されるため、あいまいさが生じる可能性があります。これらの場合、**self** は、**self** タイプを含む **DocBlock** が記述されているクラスのインスタンスであると解釈しなければなりません ('' | ||
+ | 上記の例で、**self** はクラス A のメソッド c で定義されているため、常にクラスAを参照する必要があります('' | ||
- | このPSRによって認識されるキーワードは次の通りです: | + | > 上記の性質により、この情報を収集し形成化するアプリケーションでは、クラスの各表現とともに子クラスのリストを表示することをお勧めします ('' |
- | + | </ | |
- | - TODO: | + | - **static**:この型が適用される要素は、ドキュメント化された要素が含まれているのと同じクラスであるか、またはサブクラスで見つかった場合、元のクラスではなくそのサブクラスの型です。\\ \\ このキーワードは、PHPで定義されている(静的メソッドやプロパティ、または変数修飾子でもない)[[https:// |
- | | + | - **$this**:このタイプが適用される要素は、与えられたコンテキストの現在のクラスとまったく同じインスタンスです。そのため、返されるインスタンスは同じクラスだけでなく同じインスタンスでなければならないので、このタイプは static のより厳密なバージョンという事になります。\\ \\ このタイプは、[[https:// |
- | | + | |
- | - TODO: | + | |
- | - TODO: | + | |
- | - TODO: | + | |
\\ | \\ | ||