vendor/shopware/core/Content/Cms/Aggregate/CmsSlot/CmsSlotCollection.php line 12

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Content\Cms\Aggregate\CmsSlot;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityCollection;
  4. use Shopware\Core\Framework\Log\Package;
  5. /**
  6.  * @extends EntityCollection<CmsSlotEntity>
  7.  */
  8. #[Package('content')]
  9. class CmsSlotCollection extends EntityCollection
  10. {
  11.     /**
  12.      * @var CmsSlotEntity[]|null indexed by slot name
  13.      */
  14.     private $slotCache;
  15.     /**
  16.      * @param string        $key
  17.      * @param CmsSlotEntity $entity
  18.      */
  19.     public function set($key$entity): void
  20.     {
  21.         parent::set($key$entity);
  22.         $this->slotCache[$entity->getSlot()] = $entity;
  23.     }
  24.     /**
  25.      * @param CmsSlotEntity $entity
  26.      */
  27.     public function add($entity): void
  28.     {
  29.         parent::add($entity);
  30.         $this->slotCache[$entity->getSlot()] = $entity;
  31.     }
  32.     public function getSlot(string $slot): ?CmsSlotEntity
  33.     {
  34.         $this->createSlotHashMap();
  35.         return $this->slotCache[$slot] ?? null;
  36.     }
  37.     public function getApiAlias(): string
  38.     {
  39.         return 'cms_page_slot_collection';
  40.     }
  41.     protected function getExpectedClass(): string
  42.     {
  43.         return CmsSlotEntity::class;
  44.     }
  45.     private function createSlotHashMap(): void
  46.     {
  47.         if ($this->slotCache !== null) {
  48.             return;
  49.         }
  50.         foreach ($this->getIterator() as $element) {
  51.             $this->slotCache[$element->getSlot()] = $element;
  52.         }
  53.     }
  54. }