*/ private array $accesses = []; public function __construct( private ILDAPWrapper $ldap, private Helper $helper, private IAppConfig $appConfig, private IUserManager $ncUserManager, private LoggerInterface $logger, private IEventDispatcher $dispatcher, private UserMapping $userMapping, private GroupMapping $groupMapping, ) { } public function get(Connection $connection): Access { /* Each Access instance gets its own Manager instance, see OCA\User_LDAP\AppInfo\Application::register() */ return new Access( $this->ldap, $connection, Server::get(Manager::class), $this->helper, $this->ncUserManager, $this->logger, $this->appConfig, $this->dispatcher, ); } public function getAccessForPrefix(string $configPrefix): Access { if (!isset(self::$accesses[$configPrefix])) { $this->addAccess($configPrefix); } return $this->accesses[$configPrefix]; } private function addAccess(string $configPrefix): void { $connector = new Connection($this->ldap, $configPrefix); $access = $this->get($connector); $access->setUserMapper($this->userMapping); $access->setGroupMapper($this->groupMapping); $this->accesses[$configPrefix] = $access; } }