Windowsで作る - PHPプログラミングの開発環境
このページへのアクセス 今日: 2 / 昨日: 1 総計: 3254
文書の過去の版を表示しています。
— y2sunlight 2020-05-25
本章は、若干の補足を加筆してはいるものの単にPSRのサイトを翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。
— // 原文より翻訳 PSR-11: Container interface 2020-05-25 現在 //
このドキュメントでは、依存性注入コンテナの一般的なインターフェースについて説明します。
ContainerInterface が設定する目標は、フレームワークとライブラリがコンテナーを使用してオブジェクトとパラメーター(以下では「エントリ」と呼びます)を取得する方法を標準化することです。
このドキュメントのキーワード MUST , MUST NOT , REQUIRED , SHALL , SHALL NOT , SHOULD , SHOULD NOT , RECOMMENDED , MAY 及び OPTIONAL は、 RFC 2119で説明されているように解釈して下さい。
MUST
MUST NOT
REQUIRED
SHALL
SHALL NOT
SHOULD
SHOULD NOT
RECOMMENDED
MAY
OPTIONAL
RFC 2119の説明 MUST, REQUIRED, SHALL — 絶対必要 MUST NOT, SHALL NOT — 絶対禁止 SHOULD, RECOMMENDED — 推奨(但し、無視できる特定の正当な理由が存在するかもしれない) SHOULD NOT — 推奨できない(但し、許可できる特定の正当な理由が存在するかもしれない) MAY, OPTIONAL — オプション
このドキュメントの「インプリメンター」という言葉は、依存性注入に関連するライブラリまたはフレームワークに ContainerInterface を実装している人のことと解釈して下さい。依存性注入コンテナー(DIC)の利用者は「ユーザー」と呼びます。
ContainerInterface
エントリ識別子は、少なくとも1文字のPHPの正当な文字列で、コンテナ内のアイテムを一意に識別します。 エントリ識別子は不透明(opaque)な文字列であるため、呼び出し元は文字列の構造に意味的な物があると仮定してはなりません ( SHOULD NOT )。
get
has
mixed
NotFoundExceptionInterface
true
false
has($id)
get($id)
コンテナによって直接スローされる例外は Psr\Container\ContainerExceptionInterface を実装すべきです ( SHOULD )。
存在しないIDでgetメソッドを呼び出すと、Psr\Container\NotFoundExceptionInterface がスローする必要があります ( MUST )。
オブジェクトが独自の依存関係を取得できるように、ユーザーはコンテナをオブジェクトに渡すべきではありません ( SHOULD NOT )。つまり、コンテナーをサービスロケーターとして使用することは、一般的には推奨されないパターンです。
詳細については、METAドキュメントのセクション4を参照してください。
説明されているインターフェースとクラス、および関連する例外は、psr/container パッケージの一部として提供されます。
PSRコンテナーの実装を提供するパッケージは、psr/container-implementation 1.0.0 を提供することを宣言する必要があります。
psr/container-implementation
1.0.0
実装が必要なプロジェクトでは、psr/container-implementation 1.0.0 を 要求する必要があります。
<?php namespace Psr\Container; /** * Describes the interface of a container that exposes methods to read its entries. * エントリを読み取るメソッドを公開するコンテナのインターフェースについて説明します。 */ interface ContainerInterface { /** * Finds an entry of the container by its identifier and returns it. * 識別子によってコンテナのエントリを検索して返します。 * * @param string $id 検索するエントリの識別子 * * @throws NotFoundExceptionInterface この識別子のエントリが見つかりませんでした * @throws ContainerExceptionInterface エントリの取得中にエラーが発生しました * * @return mixed エントリ */ public function get($id); /** * Returns true if the container can return an entry for the given identifier. * Returns false otherwise. * * コンテナが指定された識別子のエントリを返すことができる場合はtrueを返します。 * それ以外の場合はfalseを返します。 * * `has($id)` returning true does not mean that `get($id)` will not throw an exception. * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`. * * has($id)がtrueを返すことは、get($id)が例外をスローしないことを意味しません。 * ただし、get($id)はNotFoundExceptionInterfaceをスローしないことは意味します。 * * @param string $id 検索するエントリの識別子 * * @return bool */ public function has($id); }
<?php namespace Psr\Container; /** * Base interface representing a generic exception in a container. * コンテナの一般的な例外を表す基本インターフェース */ interface ContainerExceptionInterface { }
<?php namespace Psr\Container; /** * No entry was found in the container. * コンテナにエントリが見つかりませんでした。 */ interface NotFoundExceptionInterface extends ContainerExceptionInterface { }