*/ private $data = []; private InjectableFactory $injectableFactory; public function __construct(InjectableFactory $injectableFactory) { $this->injectableFactory = $injectableFactory; } public function get(Portal $portal): AclManager { $id = $portal->id; if (!$id) { throw new Error("AclManagerContainer: portal should have ID."); } if (!isset($this->data[$id])) { $aclManager = $this->injectableFactory->create(AclManager::class); $aclManager->setPortal($portal); $this->data[$id] = $aclManager; } return $this->data[$id]; } }