0

私たちが開発しているアプリには、サービス、マッパー、およびエンティティがあります。ORM は使用していません。アプリにはGroupGroupMember&Memberエンティティがあります。GroupMemberエンティティには, groupId&memberIdプロパティmemberAccessがあります。memberAccessフィールドは、Member内ののアクセス レベルを示しますGroup。次に、フェッチする必要があります

  1. Groupsメンバーが特定のレベルのアクセス権を持つすべての場所。( を提供することによりmemberId)
  2. Groupsメンバーがメンバーであるすべての場所と、そのアクセス権。( を提供することによりmemberId)
  3. Membersアクセス権を持つグループ内のすべて。( を提供することによりgroupId)

次のそれぞれについて、どのサービスを使用する必要があるかについてのアイデア。特定のデータを取得するためにそれらがどのように相互作用するか。

4

1 に答える 1

3

1) MembershipMapper : エンティティの配列を返すクエリをここに実装します (基本クラスとして ZfcBase\Mapper\AbstractDbMapper を見てください)。

function getGroupsForMember($member, $access = null)
function getMembersForGroup($group, $access = null)

2) MembershipServive : getServiceConfig の下の Module.php で、このサービスをサービス マネージャーに追加します。クロージャーを使用して新しい MembershipService を作成し、MembershipMapper を挿入します。グループ/メンバー関数は、おそらくマッパーへのプロキシにすぎません。

function setMembershipMapper($membershipMapper)
function getMembershipMapper()
function getGroupsForMember($member, $access = null)
function getMembersForGroup($group, $access = null)

3) Controller : MembershipService をコントローラーに注入します (クロージャーを使用してサービスを作成するのと同じ方法でこれを行うことができます)。次に、サービスのメソッドを呼び出します。

サービス/コントローラー マネージャーでサービス/マッパー/コントローラーを作成する例 (Module.php に入ります)

public function getServiceConfig() 
{
    return array(
        'factories' => array(
            'MembershipService' => function (Zend\ServiceManager\ServiceManager $sm) {
                $service = new YourNS\Service\Membership();
                $service->setMembershipMapper($sm->get('MembershipMapper'));
                return $service;
            },
            'MembershipMapper' => function ($sm) {
                $mapper = new \YourNS\Mapper\Membership();
                return $mapper;
            },
    );
}

public function getControllerConfig() 
{
    return array(
        'factories' => array(
            'YourNS\Controller\Something' => function (Zend\Mvc\Controller\ControllerManager $cm) {
                $controller = new YourNS\Controller\Something();
                $controller->setMembershipService($cm->getServiceLocator()->get('MembershipService'));
                return $controller;
            },
}
于 2013-10-22T11:00:39.287 に答える