$repositoryName * * @return class-string */ public static function translateRepositoryNameToModelName(string $repositoryName): string { return preg_replace( ['/\\\\Domain\\\\Repository/', '/Repository$/'], ['\\Domain\\Model', ''], $repositoryName ); } /** * Explodes a controllerObjectName like \Vendor\Ext\Controller\FooController * into several pieces like vendorName, extensionName, subpackageKey and controllerName * * @param string $controllerObjectName The controller name to be exploded * @return array An array of controllerObjectName pieces */ public static function explodeObjectControllerName(string $controllerObjectName): array { $matches = []; $extensionName = str_starts_with($controllerObjectName, 'TYPO3\\CMS') ? '^(?P[^\\\\]+\\\[^\\\\]+)\\\(?P[^\\\\]+)' : '^(?P[^\\\\]+)\\\\(?P[^\\\\]+)'; preg_match( '/' . $extensionName . '\\\\(Controller|Command|(?P.+)\\\\Controller)\\\\(?P[a-z\\\\]+)Controller$/ix', $controllerObjectName, $matches ); return array_filter($matches, is_string(...), ARRAY_FILTER_USE_KEY); } }