2017-05-08 6 views
0

私は受け取ったリクエストを持っていて、レスポンスを構築するサーバーアーキテクチャでPHPを使用します。すべてのリクエスト属性(クライアントIDなど)は、(私のマッパとモデルやヘルパーのように)魔法をかけるために各サブ関数とクラスに与えられます。PHPアーキテクチャ:システム全体で「定数」を保存して使用する

リクエストデータは、機能から機能、機能に移さずに作業するアイデアはありますか?

アイデア1:リクエスト/レスポンスオブジェクトを静的にします。私はちょうど1つの要求と1つの応答を持っているので、これを行うには問題はありません。

アイデア2:セッション(または同様のもの)でデータを保存する。これはまた、不快で重いと聞こえる。

これを行う別のアイデアはありますか?

+1

*「私はちょうど1つのリクエストと1つのレスポンスを持っています」* - ユニットテストの大ファンではありません...情報を明示的に渡すことは、何かを行うための最も保守的で柔軟な方法です。それは本当にそのような負担ですか? – deceze

答えて

1

独自のRequestまたはRequestContextクラスを実装し、このタイプのオブジェクトに進行中のメソッドに必要なすべてのデータを設定します。こうすることで、関数ごとに引数を増やす必要はなく、リクエスト全体を転送するだけで済みます。

これははるかに簡単に拡張でき、 "グローバル"データの欠点もありません。これは、多くのフレームワークでも使用されている典型的なパターンです。

+0

*「リクエスト/レスポンスオブジェクトを静的にしてください」* - OPにはすでにこのようなことがあると仮定していますが、それはやや不明です。 – deceze

+0

サンプルコードなしでは難しいです。しかし、それはとにかくベストプラクティスのアプローチなので、私はそれを投稿しました。 – tweber

+0

具体的なサンプルコードを解くことについては何の疑問もありませんが、そのような場合を実装する(またはリファクタリングする)アイディアを見つけることです。 _AbstractRequest_と_AbstactResponse_は、私の場合はちょうど1つの時間を持つオブジェクトです。だから、私の頭の中でそれを_static_文脈で直接使うのです。 最高のアイデアのように、提案されたようなあらゆる機能にオブジェクト全体を置きます。 –

関連する問題