2
依存性注入コンテナの概念に慣れ親しむために、PHPで基本的なRESTクライアントを構築しようとしています。最終的に、私は次のように何かをしたいと思います:RESTクライアントのPHP - DIコンテナ
$client = new RestClient();
$client->getService('user', array('id, optional fields...'));
しかし、私はまた、要求を(私は、例えば、代わりにカールのfopenを使用する場合)を扱う必要のあるオブジェクトを指定できるようにしたいです。
私がこれまで読んだによると、これを達成するための適切な方法は、次のようになります。
$request = new ServiceDefinition(
'Curl',
array('...')
);
$user = new ServiceDefinition('User',
array(new ServiceReference('request'))
);
$container = new ServiceContainer(array(
'request' => $request,
'user' => $user,
));
私の質問は次のとおりです。ユーザーオブジェクトと要求の間の依存関係を構築するための簡単な方法がありますオブジェクト? (RestClient()の基本的なセッター注入?)
ありがとうございます。
あなたが気にしないかぎり、まだ質問があります。 Userオブジェクトを返すRestClientクラス関数に 'getUser($ id)'がある場合、DIコンテナを使用しないと、RestClientクラスとUserクラスの強い結合を避けるにはどうすればいいですか? –
これは、DIコンテナがうまくいく場所です。私はUserモデルに 'Resolver'のようなものを持っているコンテナを持っています。これは基本的に、UserクラスがどのようにIDで取得するかのためのアダプタとして機能します。次に、あなたのRESTクライアントを含む具体的な 'RestClientResolver'があり、これを使ってユーザーをIDで取得する方法を知っています。 – cmbuckley
上記のあなたの投稿を考慮してユーザーのインスタンシエーションを想像してみてください。申し訳ありませんが、それは愚かな要求のように聞こえるが、私はoopのこれらの良い慣行にはかなり新しいです。 –