Ground Sunlight

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

ユーザ用ツール

サイト用ツール


psr:psr3

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr3 [2020/04/29 22:10]
y2sunlight
psr:psr3 [2020/09/01 11:52] (現在)
tanaka [PSR-3: Logger Interface]
行 3: 行 3:
  --- //[[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|PHP - PHP標準勧告]]+ 
 +  * [[psr:top|PSR - PHP標準勧告]]
   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]
   * PSR-3: Logger Interface - ロガーインターフェイス   * PSR-3: Logger Interface - ロガーインターフェイス
行 12: 行 13:
   * [[psr:psr5|PSR-5: PHPDoc Standard(Draft) - PHPDoc規約]]   * [[psr:psr5|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(Draft) - PHPDocタグ]] 
  
 ----- -----
行 51: 行 62:
 ==== 1.2 メッセージ ===== ==== 1.2 メッセージ =====
  
-  * すべてのメソッドは、メッセージとして文字列、または **<nowiki>__</nowiki>toString()** メソッドを持つオブジェクトを受け入れます。実装者は、オブジェクトが渡された場合は特別な処理を行う場合があります (''MAY'')。そうでない場合は、文字列にキャストする必要があります (''MUST'')。+  * すべてのメソッドは、メッセージとして文字列、または **<nowiki>__toString()</nowiki>** メソッドを持つオブジェクトを受け入れます。実装者は、オブジェクトが渡された場合は特別な処理を行う場合があります (''MAY'')。そうでない場合は、文字列にキャストする必要があります (''MUST'')。
  
   * メッセージには、実装者がコンテキスト配列の値で置き換えることができるプレースホルダーが含まれる場合があります (''MAY'')。 \\ \\ プレースホルダー名は、コンテキスト配列のキーに対応している必要があります (''MUST'')。\\ \\ プレースホルダー名は、1つの開始中括弧 **{** および 終了中括弧 **}** で 区切る必要があります (''MUST'')。区切り文字とプレースホルダー名の間に空白があってはいけません (''MUST NOT'')。 例:{name} \\ \\ プレースホルダー名は、**A〜Z**、**a〜z**、**0〜9**、下線( **_** )、および ピリオド( **.** ) の文字だけで構成する必要があります (''SHOULD'')。\\ \\ 実装者は、プレースホルダーを使用して、さまざまなエスケープ方法を実装し、ログを表示用に変換できます (''MAY'')。ユーザはプレースホルダー値を事前にエスケープしないでください (''SHOULD NOT'')。というのは、データはどのコンテキストで表示されるかがわからないからです。\\ \\ 以下は、参照のみを目的として提供されているプレースホルダー挿入の実装例です。\\ \\ <code php>   * メッセージには、実装者がコンテキスト配列の値で置き換えることができるプレースホルダーが含まれる場合があります (''MAY'')。 \\ \\ プレースホルダー名は、コンテキスト配列のキーに対応している必要があります (''MUST'')。\\ \\ プレースホルダー名は、1つの開始中括弧 **{** および 終了中括弧 **}** で 区切る必要があります (''MUST'')。区切り文字とプレースホルダー名の間に空白があってはいけません (''MUST NOT'')。 例:{name} \\ \\ プレースホルダー名は、**A〜Z**、**a〜z**、**0〜9**、下線( **_** )、および ピリオド( **.** ) の文字だけで構成する必要があります (''SHOULD'')。\\ \\ 実装者は、プレースホルダーを使用して、さまざまなエスケープ方法を実装し、ログを表示用に変換できます (''MAY'')。ユーザはプレースホルダー値を事前にエスケープしないでください (''SHOULD NOT'')。というのは、データはどのコンテキストで表示されるかがわからないからです。\\ \\ 以下は、参照のみを目的として提供されているプレースホルダー挿入の実装例です。\\ \\ <code php>
行 102: 行 113:
  
 ==== 1.4 ヘルパークラスとインターフェイス ===== ==== 1.4 ヘルパークラスとインターフェイス =====
 +
 +  * **Psr\Log\AbstractLogger** クラスを使用すると、**LoggerInterface** を拡張して 一般的な **log()** メソッドを実装することで、**LoggerInterface** を非常に簡単に実装できます。他の8つのメソッドは、メッセージとコンテキストを このlog() に転送しています。
 +
 +  * 同様に、**Psr\Log\LoggerTrait** を使用しても、一般的な log() メソッドを実装するだけで済みます。但し、トレイトはインターフェースを実装できないため、この場合でも **LoggerInterface** を実装する必要があります。
 +
 +  * **Psr\Log\NullLogger** は、インターフェイスと共に提供されます。それは、ロガーが与えられていない時に、フォールバックとして「ブラックホール」実装を提供するために、インターフェイスのユーザによって使用されます (''MAY'')。ただし、コンテキストデータの作成にコストがかかる場合は、条件付きロギングの方が良いアプローチかもしれません。
 +
 +> ''上記の原文'' \\ The Psr\Log\NullLogger is provided together with the interface. It MAY be used by users of the interface to provide a fall-back “black hole” implementation if no logger is given to them. However, conditional logging may be a better approach if context data creation is expensive. \\ \\  --- 曖昧な翻訳 ---\\ 特に、最後のセンテンスの意味が良く分かりませんでした。conditional logging とは何を意味するのか? それがなぜコンテキストデータ作成と関係しているのか? 
 +
 +  * **Psr\Log\LoggerAwareInterface** には **setLogger(LoggerInterface $logger)** メソッドのみが含まれており、フレームワークが任意のインスタンスにロガーを Auto Wiring するために使用できます。
 +
 +  * **Psr\Log\LoggerAwareTrait** トレイトを使用すると、**LoggerAwareInterface** と同等のインターフェイスを任意のクラスに簡単に実装できます。それは **<nowiki>$this->logger</nowiki>** へのアクセスを提供します。
 +
 +  * **Psr\Log\LogLevel** クラスは、8つのログレベルの定数を保持します。
  
 \\ \\
行 107: 行 132:
  
 ===== 2. パッケージ ====== ===== 2. パッケージ ======
 +
 +説明されているインターフェースとクラス、関連する例外クラス、および実装を検証するためのテストスイートは、[[https://packagist.org/packages/psr/log|psr/log]] パッケージの一部として提供されます。
  
 \\ \\
  
 ===== 3. Psr\Log\LoggerInterface ====== ===== 3. Psr\Log\LoggerInterface ======
 +
 +{{tablelayout?colwidth="20em"}}
 +^メソッド^要約^
 +|emergency\\ ($message, array $context = array())|システムが使用できない|
 +|alert\\ ($message, array $context = array())|すぐに行動を起こす必要がある|
 +|critical\\ ($message, array $context = array())|危機的な状態|
 +|error\\ ($message, array $context = array())|すぐに対処する必要はないが、通常はログに記録して監視する必要がある実行時エラー|
 +|warning\\ ($message, array $context = array())|エラーではない例外的な出来事|
 +|notice\\ ($message, array $context = array())|正常だが重要なイベント|
 +|info\\ ($message, array $context = array())|興味深いイベント|
 +|debug\\ ($message, array $context = array())|詳細なデバッグ情報|
 +|log($level,\\ $message, array $context = array()|任意のレベルのロギング|
  
 <code php LoggerInterface.php> <code php LoggerInterface.php>
psr/psr3.1588165812.txt.gz · 最終更新: 2020/04/29 22:10 by y2sunlight