vendor/sulu/sulu/src/Sulu/Component/Content/Document/Extension/ManagedExtensionContainer.php line 97
<?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\Document\Extension;use PHPCR\NodeInterface;use Sulu\Component\Content\Extension\ExtensionManagerInterface;/*** The managed extension container lazily loads data from the actual* extension classes. It serves a similar, but not identical, role to* the ManagedStructure.** In contrast to the Structure, which is a container of properties and returns Property instances,* extensions return simple arrays.** Note that we should remove this class as retrieving the processed data* for extensions should be done externally to the document.*/class ManagedExtensionContainer extends ExtensionContainer{/*** @var ExtensionManagerInterface*/private $extensionManager;/*** @var NodeInterface*/private $node;/*** @var string*/private $locale;/*** @var string*/private $prefix;/*** @var string*/private $internalPrefix;/*** @var string*/private $structureType;/*** @var string*/private $webspaceName;/*** @param string $structureType* @param string $locale* @param string $prefix* @param string $internalPrefix* @param string $webspaceName*/public function __construct($structureType,ExtensionManagerInterface $extensionManager,NodeInterface $node,$locale,$prefix,$internalPrefix,$webspaceName) {parent::__construct();$this->extensionManager = $extensionManager;$this->node = $node;$this->locale = $locale;$this->prefix = $prefix;$this->internalPrefix = $internalPrefix;$this->structureType = $structureType;$this->webspaceName = $webspaceName;}/*** Lazily evaluate the value for the given extension.** @param string $extensionName*/#[\ReturnTypeWillChange]public function offsetGet($extensionName){if (isset($this->data[$extensionName])) {return $this->data[$extensionName];}$extension = $this->extensionManager->getExtension($this->structureType, $extensionName);// TODO: should not pass namespace here.// and indeed this call should be removed and the extension should be// passed the document.$extension->setLanguageCode($this->locale, $this->prefix, $this->internalPrefix);// passing the webspace and locale would also be unnecessary if we passed the// document$data = $extension->load($this->node, $this->webspaceName, $this->locale);$this->data[$extensionName] = $data;return $data;}#[\ReturnTypeWillChange]public function offsetExists($extensionName){return $this->extensionManager->hasExtension($this->structureType, $extensionName);}public function toArray(){$result = [];foreach ($this->extensionManager->getExtensions($this->structureType) as $extension) {$result[$extension->getName()] = $this->offsetGet($extension->getName());}return $result;}}