$controllerConfiguration) { if (!is_string($controllerClassName) || $controllerClassName === '') { continue; } if (!is_array($controllerConfiguration)) { continue; } $actions = $controllerConfiguration['actions'] ?? []; $actions = is_array($actions) ? $actions : []; if ($actions === []) { continue; } $controllerClassName = $controllerConfiguration['className'] ?? null; $controllerClassName = is_string($controllerClassName) && $controllerClassName !== '' ? $controllerClassName : null; if ($controllerClassName === null) { continue; } $controllerAlias = $controllerConfiguration['alias'] ?? null; $controllerAlias = is_string($controllerAlias) && $controllerAlias !== '' ? $controllerAlias : null; if ($controllerAlias === null) { continue; } $allowedControllerActions[$controllerClassName] = $actions; $controllerClassToAliasMapping[$controllerClassName] = $controllerAlias; $controllerAliasToClassMapping[$controllerAlias] = $controllerClassName; if ($firstItem) { $defaultControllerClassName = $controllerClassName; $defaultControllerAlias = $controllerAlias; } $firstItem = false; } if ($defaultControllerClassName === null || $defaultControllerAlias === null) { throw new \LogicException( 'Either $defaultControllerClassName or $defaultControllerAlias are unexpectedly null', 1679051921 ); } if ($allowedControllerActions === []) { throw new \LengthException( '$allowedControllerActions is expected to not be empty', 1679051891 ); } return new self( $extensionName, $pluginName, $defaultControllerClassName, $defaultControllerAlias, $defaultFormat, $allowedControllerActions, $controllerAliasToClassMapping, $controllerClassToAliasMapping, ); } /** * @return non-empty-string */ public function getExtensionName(): string { return $this->extensionName; } /** * @return non-empty-string */ public function getPluginName(): string { return $this->pluginName; } /** * @return class-string */ public function getDefaultControllerClassName(): string { return $this->defaultControllerClassName; } /** * @return non-empty-string */ public function getDefaultControllerAlias(): string { return $this->defaultControllerAlias; } /** * @return non-empty-string */ public function getDefaultFormat(): string { return $this->defaultFormat; } /** * @return array> */ public function getAllowedControllerActions(): array { return $this->allowedControllerActions; } /** * @return list */ public function getAllowedControllerActionsOfController(string $controllerClassName): array { return $this->allowedControllerActions[$controllerClassName] ?? []; } /** * @return array */ public function getControllerAliasToClassMapping(): array { return $this->controllerAliasToClassMapping; } /** * @return array */ public function getControllerClassToAliasMapping(): array { return $this->controllerClassToAliasMapping; } /** * @param non-empty-string $controllerAlias * @return class-string|null */ public function getControllerClassNameForAlias(string $controllerAlias): ?string { return $this->controllerAliasToClassMapping[$controllerAlias] ?? null; } /** * @param class-string $controllerClassName * @return non-empty-string|null */ public function getControllerAliasForControllerClassName(string $controllerClassName): ?string { return $this->controllerClassToAliasMapping[$controllerClassName] ?? null; } public function getDefaultActionName(string $controllerClassName): ?string { $actions = $this->allowedControllerActions[$controllerClassName] ?? []; return $actions[0] ?? null; } }