私はZF2の世界の初心者で、次の問題があります。
私はブラウザ ゲームを書いており、ゲーム ページのレンダリングに関連するメインの MVC モジュール (例: 概要ページ、建物ページなど) を作成する予定でした。異なるページは、異なる Page\Controllers によって生成されます。すべて順調です。
しかし、MVC のモデル側のみを実装する必要がある (View も Controller もありません)、いくつかのエンジン固有のモジュール (User、Planet、Queue など) を追加することも計画しました。Model を実装してデータベースにアクセスし、それをゲーム ページをレンダリングするメインの MVC ページ モジュールと共有するだけです。
エンジン固有のモジュール API を serviceManager に配置する方法を発明したので、ページ コントローラーはそれにアクセスできます (ZF2 では一般的な方法だと思います)。たとえば、私はユーザーインターフェイスを持っています:
interface UserInterface
{
public function Create ();
public function Load ($player_id);
public function Login ();
public function Logout ();
}
およびそれを実装する UserManager クラス:
class UserManager implements UserInterface
{
....
\module\User\config\module.config.php ファイルに、UserManager を他のモジュールと共有する factory を追加しました。
return array (
'service_manager' => array(
'factories' => array(
'UserManager' => function($sm) {
return new \User\UserManager ();
},
),
),
);
それは大丈夫。Page Controller は、 serviceManager を悪用して UserManager API にアクセスできるようになりました。
$user = $this->getServiceLocator()->get('UserManager');
しかし、 Module API を Controller 外のモジュール間で共有するにはどうすればよいですか?
たとえば、私の UserManager は PlanetManager でいくつかのアクションを実行する必要があります。
言い換えれば、クロスモデルの相互作用を実装するには、素晴らしい zend-way が必要です。ありがとう。