![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/EntityManager/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\EntityManager; use Magento\Framework\EntityManager\Sequence\SequenceFactory; use Magento\Framework\ObjectManagerInterface; /** * Class MetadataPool * * @api * @since 100.1.0 */ class MetadataPool { /** * @var ObjectManagerInterface * @since 100.1.0 */ protected $objectManager; /** * @var array * @since 100.1.0 */ protected $metadata; /** * @var \Magento\Framework\EntityManager\EntityMetadata[] * @since 100.1.0 */ protected $registry; /** * @var SequenceFactory * @since 100.1.0 */ protected $sequenceFactory; /** * MetadataPool constructor. * @param ObjectManagerInterface $objectManager * @param SequenceFactory $sequenceFactory * @param array $metadata */ public function __construct( ObjectManagerInterface $objectManager, SequenceFactory $sequenceFactory, array $metadata ) { $this->objectManager = $objectManager; $this->sequenceFactory = $sequenceFactory; $this->metadata = $metadata; } /** * @param string $entityType * @return EntityMetadataInterface */ private function createMetadata($entityType) { //@todo: use ID as default if , check is type has EAV attributes $connectionName = isset($this->metadata[$entityType]['connectionName']) ? $this->metadata[$entityType]['connectionName'] : 'default'; $eavEntityType = isset($this->metadata[$entityType]['eavEntityType']) ? $this->metadata[$entityType]['eavEntityType'] : null; $entityContext = isset($this->metadata[$entityType]['entityContext']) ? $this->metadata[$entityType]['entityContext'] : []; return $this->objectManager->create( EntityMetadataInterface::class, [ 'entityTableName' => $this->metadata[$entityType]['entityTableName'], 'eavEntityType' => $eavEntityType, 'connectionName' => $connectionName, 'identifierField' => $this->metadata[$entityType]['identifierField'], 'sequence' => $this->sequenceFactory->create($entityType, $this->metadata), 'entityContext' => $entityContext ] ); } /** * @param string $entityType * @return EntityMetadataInterface * @throws \Exception * @since 100.1.0 */ public function getMetadata($entityType) { if (!isset($this->metadata[$entityType])) { throw new \Exception(sprintf('Unknown entity type: %s requested', $entityType)); } if (!isset($this->registry[$entityType])) { $this->registry[$entityType] = $this->createMetadata($entityType); } return $this->registry[$entityType]; } /** * @param string $entityType * @return HydratorInterface * @deprecated 100.1.0 * @since 100.1.0 */ public function getHydrator($entityType) { $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); return $objectManager->get(HydratorPool::class)->getHydrator($entityType); } /** * Check if entity type configuration was set to metadata * * @param string $entityType * @return bool * @since 100.1.0 */ public function hasConfiguration($entityType) { return isset($this->metadata[$entityType]); } }