0

在我们正在开发的应用程序中,我们有服务、映射器和实体。我们没有使用 ORM。在应用程序中,我们有Group, GroupMember&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)控制器:将您的 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 回答