vendor/sulu/sulu/src/Sulu/Component/Content/Compat/StructureManager.php line 72
<?php/** This file is part of Sulu.** (c) Sulu GmbH** This source file is subject to the MIT license that is bundled* with this source code in the file LICENSE.*/namespace Sulu\Component\Content\Compat;use Sulu\Bundle\DocumentManagerBundle\Bridge\DocumentInspector;use Sulu\Component\Content\Compat\Structure\LegacyPropertyFactory;use Sulu\Component\Content\Metadata\Factory\Exception\StructureTypeNotFoundException;use Sulu\Component\Content\Metadata\Factory\StructureMetadataFactory;use Sulu\Component\Content\Metadata\StructureMetadata;use Symfony\Component\DependencyInjection\ContainerAwareTrait;/*** generates subclasses of structure to match template definitions.* this classes will be cached in Symfony cache.*/class StructureManager implements StructureManagerInterface{use ContainerAwareTrait;private $structureFactory;private $inspector;private $propertyFactory;private $typeMap;public function __construct(StructureMetadataFactory $structureFactory,DocumentInspector $inspector,LegacyPropertyFactory $propertyFactory,array $typeMap) {$this->structureFactory = $structureFactory;$this->inspector = $inspector;$this->propertyFactory = $propertyFactory;$this->typeMap = $typeMap;}public function getStructure($key, $type = Structure::TYPE_PAGE){try {$metadata = $this->structureFactory->getStructureMetadata($type, $key);} catch (StructureTypeNotFoundException $exception) {return;}return $this->wrapStructure($type, $metadata);}public function getStructures($type = Structure::TYPE_PAGE){$wrappedStructures = [];$structures = $this->structureFactory->getStructures($type);foreach ($structures as $structure) {$wrappedStructures[] = $this->wrapStructure($type, $structure);}return $wrappedStructures;}public function wrapStructure($type, StructureMetadata $structure){if (!isset($this->typeMap[$type])) {throw new \InvalidArgumentException(\sprintf('Invalid legacy type "%s", known types: "%s"',$type,\implode('", "', \array_keys($this->typeMap))));}$class = $this->typeMap[$type];return new $class($structure, $this->inspector, $this->propertyFactory);}}