/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/EntityManager/Sequence/SequenceApplier.php
95 строк
3 KB
Alexandra Zota
ACP2E-4019: CE copyright updates for 2.4.9-beta1
22 окт 2025, 17:47
22 окт 2025, 17:47
1b769b7
Код
Авторство
О чём код?
<?php /** * Copyright 2017 Adobe * All Rights Reserved. */ namespace Magento\Framework\EntityManager\Sequence; /** * Applier of sequence identifier. */ class SequenceApplier { /** * @var \Magento\Framework\EntityManager\MetadataPool */ private $metadataPool; /** * @var \Magento\Framework\EntityManager\TypeResolver */ private $typeResolver; /** * @var \Magento\Framework\EntityManager\Sequence\SequenceManager */ private $sequenceManager; /** * @var \Magento\Framework\EntityManager\Sequence\SequenceRegistry */ private $sequenceRegistry; /** * @var \Magento\Framework\EntityManager\HydratorPool */ private $hydratorPool; /** * @param \Magento\Framework\EntityManager\MetadataPool $metadataPool * @param \Magento\Framework\EntityManager\TypeResolver $typeResolver * @param \Magento\Framework\EntityManager\Sequence\SequenceManager $sequenceManager * @param \Magento\Framework\EntityManager\Sequence\SequenceRegistry $sequenceRegistry * @param \Magento\Framework\EntityManager\HydratorPool $hydratorPool */ public function __construct( \Magento\Framework\EntityManager\MetadataPool $metadataPool, \Magento\Framework\EntityManager\TypeResolver $typeResolver, \Magento\Framework\EntityManager\Sequence\SequenceManager $sequenceManager, \Magento\Framework\EntityManager\Sequence\SequenceRegistry $sequenceRegistry, \Magento\Framework\EntityManager\HydratorPool $hydratorPool ) { $this->metadataPool = $metadataPool; $this->typeResolver = $typeResolver; $this->sequenceManager = $sequenceManager; $this->sequenceRegistry = $sequenceRegistry; $this->hydratorPool = $hydratorPool; } /** * Applies sequence identifier to given entity. * * In case sequence for given entity is not configured in corresponding di.xml file, * the entity will be returned without any changes. * * @param object $entity * * @return object */ public function apply($entity) { $entityType = $this->typeResolver->resolve($entity); /** @var \Magento\Framework\DB\Sequence\SequenceInterface|null $sequence */ $sequence = $this->sequenceRegistry->retrieve($entityType) ? $this->sequenceRegistry->retrieve($entityType)['sequence'] : null; if ($sequence) { $metadata = $this->metadataPool->getMetadata($entityType); $hydrator = $this->hydratorPool->getHydrator($entityType); $entityData = $hydrator->extract($entity); // Object already has identifier. if (isset($entityData[$metadata->getIdentifierField()]) && $entityData[$metadata->getIdentifierField()]) { $this->sequenceManager->force($entityType, $entityData[$metadata->getIdentifierField()]); } else { $entityData[$metadata->getIdentifierField()] = $sequence->getNextValue(); $entity = $hydrator->hydrate($entity, $entityData); } } return $entity; } }