MVC アプリケーションに ZF を使用していますが、コードをどのように構成するべきかについて非常に混乱しています。
基本的に、アプリで実行したいすべての機能を備えた1つの巨大な長いファイルである手続き型アプリケーションを持っています... getUsername($ id)など。現在のコードベースは機能せず、がらくたで、デバッグが困難です。
私はMVCを初めて使用し、すべてをどのようにレイアウトする必要があるか、何と通信する必要があるかなどについて非常に混乱しています。したがって、ビューがテンプレートであり、コントローラーがスキニーである必要があり、ファットモデルが必要であることを知っていますが、私はロジックが必要な場所が混乱しています。
私はゲームを作っていますが、そこには通常、ユーザー、村、軍隊、MapSquares、リソースなどのオブジェクトがあります。
理論的に完全に考えていた場合、1 つのユーザー オブジェクトには多くの村が含まれ、各村は 1 つの正方形に属し、軍隊 (多くのユニットを含む) が含まれます。
したがって、モデルにはロジックを含めず、データを取得するための get および set 関数のリストのみを含める必要があり、処理のロジックはマッパー内で質問を行う必要があると考えました...のように:
$villageMapper = new VillageMapper();
// Get village from database using mapper
$village = $villageMapper->getVillage($id, new Village());
2 つの村が互いに攻撃し合った結果を判断したい場合、どこで行うのでしょうか? 私は次のようなことをしますか:
$outcome = $villageMapper->determineAttackOutcome($village1, $village2);
それとも、内部にロジックが少し入った戦闘オブジェクトですか?
$battle = new Battle();
// Add participants
$battle->addAttacker($village1)->addDefender($village2);
$outcome = $battle->performAttack();
// Save village changes cause of battle
$villageMapper->save($battle->getAttacker());
$villageMapper->save($battle->getDefender());
私はたくさんの DbTable php ファイルを持っており、そこにすべてのデータベース コードが入っていると思います...だから私の質問は: 私の Mapper オブジェクトは、データベースへの取得や保存などにのみ使用されるべきですか?
ありがとう、ドム