kapitchi / entity
通用实体API和实体修订控制。
dev-master
2013-08-01 13:01 UTC
Requires
- php: >=5.3.3
- kapitchi/base: dev-master
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 状态: 不完整
许可证
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 映射器的实体服务
待办事项