Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


psr:psr5

差分

このページの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) ======
  
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-04-28//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-04-28//
  
-本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。+本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。 
 + 
 +関連記事
  
-==== 目次 ==== +  * [[psr:top|PSR - PHP標準勧告]]
-  * [[psr:top|PHP - PHP標準勧告]]+
   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]
   * [[psr:psr3|PSR-3: Logger Interface - ロガーインターフェイス]]   * [[psr:psr3|PSR-3: Logger Interface - ロガーインターフェイス]]
行 16: 行 13:
   * PSR-5: PHPDoc Standard(Draft) - PHPDoc規約   * PSR-5: PHPDoc Standard(Draft) - PHPDoc規約
   * [[psr:psr6|PSR-6: Caching Interface - キャッシングインターフェイス]]    * [[psr:psr6|PSR-6: Caching Interface - キャッシングインターフェイス]] 
 +  * [[psr:psr7|PSR-7: HTTP Message Interface - HTTPメッセージインターフェイス]] 
 +  * [[psr:psr11|PSR-11: Container Interface - コンテナインターフェイス]] 
 +  * [[psr:psr12|PSR-12: Extended Coding Style - 拡張コーディングスタイル]] 
 +  * [[psr:psr13|PSR-13: Link definition interfaces - リンク定義インターフェース]]
 +  * [[psr:psr14|PSR-14: Event Dispatcher - イベントディスパッチャー]] 
 +  * [[psr:psr15|PSR-15: HTTP Server Request Handlers - HTTPサーバーリクエストハンドラー]] 
 +  * [[psr:psr16|PSR-16: Common Interface for Caching Libraries - キャッシングライブラリのための共通インターフェース]] 
 +  * [[psr:psr17|PSR-17: HTTP Factories - HTTPファクトリー]] 
 +  * [[psr:psr18|PSR-18: HTTP Client - HTTPクライアント]] 
 +  * [[psr:psr19|PSR-19: PHPDoc tags - PHPDocタグ]] 
  
 \\ \\
行 411: 行 418:
 ===== 付録A. タイプ ====== ===== 付録A. タイプ ======
  
-===== ABNF =====+==== ABNF ====
  
 タイプには次の[[https://tools.ietf.org/html/rfc5234|ABNF]]定義があります。 タイプには次の[[https://tools.ietf.org/html/rfc5234|ABNF]]定義があります。
行 427: 行 434:
 \\ \\
  
-===== 詳細 =====+==== 詳細 ====
  
 ''タイプ'' が使用される場合、ユーザーは以下に詳述するように、値または値のセットを期待します。 ''タイプ'' が使用される場合、ユーザーは以下に詳述するように、値または値のセットを期待します。
行 446: 行 453:
 \\ \\
  
-===== 配列 =====+==== 配列 ====
  
 ''タイプ'' で表される値は配列にすることができます。このタイプは、次のオプションのいずれかの形式に従って定義する必要があります (''MUST'')。 ''タイプ'' で表される値は配列にすることができます。このタイプは、次のオプションのいずれかの形式に従って定義する必要があります (''MUST'')。
  
-  - 指定されない場合表現された配列の内容の定義を与えない。\\ \\ 例:<code php>@return array</code> +  - 指定されない場合: 表現された配列の内容の定義を与えない。\\ \\ 例:<code php>@return array</code> 
-  - 単一のタイプを含んでいる指定タイプ定義は、各配列値のタイプを読者に通知します。 その場合、与えられた配列の各値に対して1つのタイプのみが期待されます。\\ \\ 例:<code php>@return int []</code>//mixed// も単一のタイプであり、このキーワードを使用して、各配列の値に可能なタイプが含まれていることを示すことができる点に注意してください。 +  - 単一のタイプを含んでいる指定: タイプ定義は、各配列値のタイプを読者に通知します。 その場合、与えられた配列の各値に対して1つのタイプのみが期待されます。\\ \\ 例:<code php>@return int []</code>//mixed// も単一のタイプであり、このキーワードを使用して、各配列の値に可能なタイプが含まれていることを示すことができる点に注意してください。 
-  - 複数のタイプを含んでいる指定タイプ定義は、各配列値のタイプを読者に通知します。 各値は、指定されたタイプのいずれかになります。\\ \\ 例<code php>:@return(int | string)[]</code>+  - 複数のタイプを含んでいる指定: タイプ定義は、各配列値のタイプを読者に通知します。 各値は、指定されたタイプのいずれかになります。\\ \\ 例<code php>:@return(int | string)[]</code>
  
 \\ \\
  
-===== 有効なクラス名 =====+==== 有効なクラス名 ====
  
 有効なクラス名は、タイプが言及しているコンテキストに基づいて参照されます。従って、これは完全修飾クラス名(FQCN)であるか。または名前空間内に存在ローカル名であるかのいずれかになります。 有効なクラス名は、タイプが言及しているコンテキストに基づいて参照されます。従って、これは完全修飾クラス名(FQCN)であるか。または名前空間内に存在ローカル名であるかのいずれかになります。
行 470: 行 477:
 \\ \\
  
-===== キーワード =====+==== キーワード ====
  
 キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が ''DocBlock'' の対象となるコードの理解に役立つ分類には価値があります。 キーワードは、タイプの目的を定義します。すべての要素がクラスによって決められているわけではなく、開発者が ''DocBlock'' の対象となるコードの理解に役立つ分類には価値があります。
  
 ===注意:=== ===注意:===
-> これらのキーワードのほとんどは、PHPでクラス名として使用でき、実際のクラスと区別するのが難しい場合があります+> これらのキーワードのほとんどは、PHPでクラス名として使用でき、実際のクラスと区別するのが難しい場合があります。そのため、ほとんどのクラス名は大文字の最初の文字で始まるため、キーワードは小文字にする必要があります (''MUST'')。コード内でこれらの名前のクラスを使用すべきではありません (''SHOULD NOT'')。
  
-TODO:+>これらのキーワードの名前でクラスに名前を付けない理由は他にもありますが、それは本仕様の範囲を超えています。
  
 +このPSRによって認識されるキーワードは次の通りです:
  
-Most of these keywords are allowed as class names in PHP and can be hard to distinguish from real classesAs 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) または ''Traversable'' オブジェクトです。\\ \\  
 +  - **resource**:このタイプが適用される要素は、PHPの定義によるリソースです。\\ \\  
 +  - **mixed**:このタイプが適用される要素は、ここで指定された任意のタイプにすることができます。コンパイル時にどのタイプが使用されるかは不明です。\\ \\  
 +  - **void**:このタイプは通常、メソッドまたは関数の戻り値のタイプを定義するときにのみ使用され、「何も返されない」ことを示します。したがって、ユーザーは戻り値に頼る頼るべきではありません。\\ \\ **例1:**<code php> 
 +/** 
 + * @return void 
 + */ 
 +function outputHello() 
 +
 +    echo 'Hello world'; 
 +
 +</code>上記の例では、returnステートメントが指定されていないため、戻り値は決定されません。\\ \\ **例2:**<code php> 
 +/** 
 + * @param bool $quiet when true 'Hello world' is echo-ed. 
 + * 
 + * @return void 
 + */ 
 +function outputHello($quiet) 
 +
 +    if ($quiet) { 
 +        return; 
 +    } 
 +    echo 'Hello world'; 
 +
 +</code>この例では、関数には特定の値のないreturnステートメントが含まれています。実際の値が指定されていないため、これも void タイプと見なされます。  
 +  - **null**:このタイプが適用される要素は **NULL** 値であるか、さもなくば技術的には存在しません。\\ \\ voidとの大きな違いは、このタイプは、記述された要素がいつでも明示的な **NULL** 値を含む可能性があるあらゆる状況で使用されるということです。\\ \\ **例1:** \\ \\ <code php> 
 +/** 
 + * @return null 
 + */ 
 +function foo() 
 +
 +    echo 'Hello world'; 
 +    return null; 
 +
 +</code>このタイプは通常、何も返されない可能性があることを示しますために、他のタイプと組み合わせて使用されます。 \\ \\ **例2:** \\ <code php> 
 +/** 
 + * @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; 
 +
 +</code> 
 +  - **callable**:このタイプが適用される要素は、関数呼び出しへのポインターです。これは、PHPの定義による呼び出し可能(''callable'')な任意のタイプです。\\ \\  
 +  - **self**:この型が適用される要素は、ドキュメント化された要素がもともと含まれていたのと同じクラスです。<div indent> 
 +=== 例: === 
 +> メソッド 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.+=== 例(前の例の状況が引き続き適用されます): ===
  
-これらのキーワードの名前でクラスに名前を付けない理由他にもありますが、それはこ仕様の範囲超えています。+クラス クラス A を拡張しメソッドcを再定義しません。そのため、クラス B からメソッド c 呼び出すことができます。
  
 +この状況では、**self** がクラス A または B のいづれかとして解釈されるため、あいまいさが生じる可能性があります。これらの場合、**self** は、**self** タイプを含む **DocBlock** が記述されているクラスのインスタンスであると解釈しなければなりません (''MUST'')。
  
 +上記の例で、**self** はクラス A のメソッド c で定義されているため、常にクラスAを参照する必要があります(''self'')。
  
-このPSRによ認識されるドは次の通 +> 上記の性質により、この情報を収集し形成化するアプリケーションでは、クラスの各表現とともに子クラスのリストを表示することをお勧めします (''RECOMMENDED'')。 これにより、どのクラスが型とし受け入れられるかがユに明らかにな 
- +</div> 
-  - TODO: +  - **static**:この型が適用される要素は、ドキュメント化された要素が含まれているのと同じクラスであるか、またはサブクラスで見つかった場合、元のクラスではなくそのサブクラスの型です。\\ \\ このキーワードは、PHPで定義されている(静的メソッドやプロパティ、または変数修飾子でもない)[[https://www.php.net/manual/ja/language.oop5.late-static-bindings.php|遅延静的束縛(Late Static Bindings)]]に対するキーワードと同じように動作します。\\ \\  
-  TODO: +  - **$this**:このタイプが適用される要素は、与えられたコンテキストの現在のクラスとまったく同じインスタンスです。そのため、返されるインスタンスは同じクラスだけでなく同じインスタンスでなければならないので、このタイプは static のより厳密なバージョンという事になります。\\ \\ このタイプは、[[https://en.wikipedia.org/wiki/Fluent_interface|Fluent Interface]]デザインパターン(流れるようなインターフェース) を実装するメソッドの戻り値としてよく使用されます。
-  TODO: +
-  - TODO: +
-  - TODO: +
-  - TODO: +
  
 \\ \\
  
  
psr/psr5.txt · 最終更新: 2020/09/01 11:52 by tanaka