kapitchi/entity

通用实体API和实体修订控制。

dev-master 2013-08-01 13:01 UTC

This package is not auto-updated.

Last update: 2024-09-14 12:04:10 UTC


README

版本: 0.1-dev
网站: http://kapitchi.com
演示: http://kapitchi.com/showcase
版权: (c) 2012-2013 Kapitchi Open Source Team

README.md 状态: 不完整

许可证

LGPLv3
GNU Lesser General Public License,版本 3.0

介绍

一组公共类/接口,提供通用实体API和事件触发服务,包括映射器、控制器和助手以处理和管理工作实体。实体被定义为实现getId()方法并具有空构造函数的POPO。

安装

待办事项

基本用法

查找实体/实体

按实体ID查找

    $entity = $service->find(1); //returns entity object or null if not found
    //OR
    $entity = $service->get(1); //throws exception if not found

通过多个标准获取实体分页器

    $paginator = $service->getPaginator(array(
        'displayName' => 'kapitchi'
    ), array(
        'created' => 'ASC' //order by created ascending
    ));
    
    $entities = $paginator->getCurrentItems();

持久化实体

持久化实体对象。注意,如果getId()不是空值,则插入新实体,否则映射器执行更新

    $entity = $service->createEntityFromArray(array( //creates entity from array
        'displayName' => 'kapitchi'
    ));
    $persistEvent = $service->persist($entity);
    //$entity->getId() is populated now

从数组持久化实体

    $persistEvent = $service->persist(array(
        'displayName' => 'kapitchi'
    ));

删除实体

$service->remove($entity);

事件

以下示例假设使用 MyModule\Service\MyEntity 服务类名。

$service->persist($entity)

事件:MyModule\Service\MyEntity:persist 参数

  • entity - 实体对象
  • data - 从数组持久化实体时
  • origEntity - 当持久化/更新现有实体时,我们首先从映射器加载原始实体

待办事项

服务管理器配置

使用 Zend\Db 映射器的实体服务

    'MyModule\Service\MyEntity' => function ($sm) {
        $s = new Service\MyEntity(
            $sm->get('MyModule\Mapper\MyEntity'),
            $sm->get('MyModule\Entity\MyEntity'),
            $sm->get('MyModule\Entity\MyEntityHydrator')
        );
        return $s;
    },
    'MyModule\Mapper\MyEntityDbAdapter' => function ($sm) {
        return new \KapitchiEntity\Mapper\MyEntityDbAdapter(
            $sm->get('Zend\Db\Adapter\Adapter'),
            new EntityDbAdapterMapperOptions(array(
                'tableName' => 'identity_auth_credential',
                'primaryKey' => 'id',
                'hydrator' => $sm->get('MyModule\Entity\MyEntityHydrator'),
                'entityPrototype' => $sm->get('MyModule\Entity\MyEntity'),
            ))
        );
    },
    'MyModule\Entity\MyEntityHydrator' => function ($sm) {
        //needed here because hydrator tranforms camelcase to underscore
        return new \Zend\Stdlib\Hydrator\ClassMethods(false);
    },

使用 Doctrine 映射器的实体服务

待办事项