本文整理汇总了PHP中Container::state方法的典型用法代码示例。如果您正苦于以下问题:PHP Container::state方法的具体用法?PHP Container::state怎么用?PHP Container::state使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Container
的用法示例。
在下文中一共展示了Container::state方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: persist
/**
* {@inheritdoc}
*/
public function persist(ConnectionInterface $connection, Container $container)
{
$entities = $container->state(Container::STATE_NEW);
if ($entities->size() === 0) {
return;
}
$entities->foreach(function (IdentityInterface $identity, $entity) {
$this->dispatcher->dispatch(Events::PRE_PERSIST, new PersistEvent($identity, $entity));
});
$connection->execute($this->queryFor($entities));
$entities->foreach(function (IdentityInterface $identity, $entity) use($container) {
$container->push($identity, $entity, Container::STATE_MANAGED);
$this->changeset->use($identity, $this->extractor->extract($entity));
$this->dispatcher->dispatch(Events::POST_PERSIST, new PersistEvent($identity, $entity));
});
}
示例2: persist
/**
* {@inheritdoc}
*/
public function persist(ConnectionInterface $connection, Container $container)
{
$entities = $container->state(Container::STATE_TO_BE_REMOVED)->foreach(function (IdentityInterface $identity, $object) {
$this->dispatcher->dispatch(Events::PRE_REMOVE, new RemoveEvent($identity, $object));
});
if ($entities->size() === 0) {
return;
}
$connection->execute($this->queryFor($entities));
$entities->foreach(function (IdentityInterface $identity, $object) use($container) {
$container->push($identity, $object, Container::STATE_REMOVED);
$this->changeset->use($identity, new Collection([]));
//in case the identity is reused later on
$this->dispatcher->dispatch(Events::POST_REMOVE, new RemoveEvent($identity, $object));
});
}
示例3: persist
/**
* {@inheritdoc}
*/
public function persist(ConnectionInterface $connection, Container $container)
{
$changesets = new Map(IdentityInterface::class, CollectionInterface::class);
$entities = $container->state(Container::STATE_MANAGED)->foreach(function (IdentityInterface $identity, $entity) use(&$changesets) {
$data = $this->extractor->extract($entity);
$changeset = $this->changeset->compute($identity, $data);
if ($changeset->count() > 0) {
$changesets = $changesets->put($identity, $changeset);
}
});
if ($changesets->size() === 0) {
return;
}
$changesets->foreach(function (IdentityInterface $identity, CollectionInterface $changeset) use($entities) {
$this->dispatcher->dispatch(Events::PRE_UPDATE, new UpdateEvent($identity, $entities->get($identity), $changeset));
});
$connection->execute($this->queryFor($changesets, $entities));
$changesets->foreach(function (IdentityInterface $identity, CollectionInterface $changeset) use($entities) {
$entity = $entities->get($identity);
$this->changeset->use($identity, $this->extractor->extract($entity));
$this->dispatcher->dispatch(Events::POST_UPDATE, new UpdateEvent($identity, $entity, $changeset));
});
}