0

私はWebアプリを開発しています。
これまでバックエンドは JBoss 6.1 Application Server (Java EE) でした。

これで、同じフロントエンドを使用して、PHP に別のバックエンドが存在するはずです。
Java バックエンドの構造が好きなので、php バックエンドにも同様の構造を設計します。

PHP バックエンドへのすべてのリクエストは、1 つのエントリに送られます。それは「facade.php」であり、私のフロント コントローラです。

フロント コントローラー (facade.php) が JSON 入力などを処理し、その後に大きな switch ステートメントがあります。すべてのタスク (ログイン、イベント オブジェクトの取得など) は、別のプロセス クラスに転送されます。

「facade.php」のスニペット:

switch ($procClass) {
  case "lgi":
    require_once("classes/Login.php");
    $login = new Login();
    $resultMap = $login->process($internalObj, $sessionObj);
    break;
  case "cst":
    require_once("classes/Cases.php");
    $cases = new Cases();
    $resultMap = $cases->process($internalObj, $sessionObj);
    break;  
  .
  . 
  .
}

JBoss Java EE 環境では、ステートレス セッション Bean にいて、別のステートレス セッション Bean (異なるクラス) をローカル ルックアップすると、オブジェクトは参照によって他のクラスのメソッドに渡されます。

PHP では、同じクラスにいて、あるオブジェクトを同じクラスの別のメソッドに渡す場合、オブジェクトは参照ごとに渡されます (より正確には、参照は値によって渡されます)。

しかし、上記の例のように、「sessionObj」オブジェクトをfacade.phpから別のファイルにある別のクラス(ケース)のインスタンスに渡すと、参照ごとにオブジェクトを渡すことができないようです。

私の仮定は正しいですか?

この状況で参照ごとに渡す別の方法はありますか (クラスが別のファイルにある場合にオブジェクトからオブジェクトへ)。

4

1 に答える 1

1

Casesクラスのプロセスメソッドの定義は次のようになります。

function process($internalObj, &$sessionObj) {
     [...]
}

パラメータの前の「&」は、参照によって渡されたことを示します

于 2013-01-22T16:32:24.873 に答える