PHP 5.3 のクラス間でセッション キーを渡すための最も適切な設計を考え出そうとしています。
セッション キーはサードパーティの API から取得され、私のアプリケーションは、このセッション キーを渡す必要があるさまざまな API 呼び出しを行います。
関連する API 呼び出しを保持するクラスを作成しました。egClass cart は、呼び出されたときに API への要求を開始して、API_GetCart()、API_AddItem() などの呼び出しからデータを返すメソッドを保持します。
セッション キーを 1 つの Cookie (これまでに必要な唯一の Cookie) に保存しており、その Cookie の値をほぼすべてのクラスで利用できるようにする必要があります。データベースまたは $_SESSION を使用してセッション データを保持できません。サードパーティ API は、バスケット コンテンツなどのセッション管理を処理します。
ユーザーが初めてアプリにアクセスしたとき、Cookie の値がないため、新しいセッション キーを新しい Cookie に割り当て、その値を渡すことができる必要があります (まだ Cookie として使用できないため、まだ同じ HTTP リクエストを処理しています) を他のクラスに送信します。
私が持っていた 1 つのアイデアは、このような Session クラスを作成し、コンストラクターにセッション グラブ/チェック コードを配置することでした。
class Session {
public $sk;
function __construct() {
//code to check if user has sessionkey (sk) in cookie
//if not, grab new sessionkey from 3rd party API and assign to new cookie
// $sk = 'abcde12345'; //example $sk value
}
}
次に、すべてのビュー ページで、Session の新しいインスタンスをインスタンス化し、そのオブジェクトを、クラス コンストラクターへの引数またはメソッド引数として、それを必要とする各クラスに渡します (ほとんどすべてのクラスで行います)。
orderSummary.php
$s = new Session;
//$s currently would only hold one variable, $sk = "abcde12345"
//but in the future may hold more info or perform more work
// what is best approach to making the sessionkey
// available to all classes? arg to constructor or method... or neither :)
$basket = new Basket;
$baskSumm = $basket->getBasketSummary();
$billing = new Billing;
$billSumm = $billing->getBillingSummary();
$delivery = new Delivery;
$delSumm = $delivery->getDeliverySummary();
//code to render as HTML the customer's basket details
//as well as their billing and delivery details
Session クラス (実際には単一の値しか保持しない) を作成するのが最善のアイデアですか? より多くの値を保持し、より多くのチェックを実行する必要があるかもしれないことを考えると、それをクラスにするのは「正しい」と感じました。その値をさまざまなクラスに渡すという点では、Session オブジェクトをコンストラクターに渡すのが最善でしょうか。
$se = new Session;
$basket = new Basket($se);
$baskSumm = $basket->getBasketSummary();
私はOOPが初めてなので、いくつかのガイダンスをいただければ幸いです。