/** * @param string $destination * * @throws \LogicException * * @return string */ public function getRouteFromDestination($destination) { if (strpos($destination, '::') !== false) { list($controllerNamespaceName, $actionName) = explode('::', $destination); } elseif (strpos($destination, ':') !== false) { list($serviceName, $actionName) = explode(':', $destination); $controllerNamespaceName = get_class($this->app[$serviceName]); } else { throw new LogicException('Cannot parse destination'); } list($namespace, $application, $bundle, $layer, $controllerName) = explode('\\', $controllerNamespaceName); $filter = new CamelCaseToSeparatorFilter('-'); $bundle = str_replace(Store::getInstance()->getStoreName(), '', $bundle); $controller = $filter->filter(str_replace('Controller', '', $controllerName)); $action = $filter->filter(str_replace('Action', '', $actionName)); return $bundle . '/' . $controller . '/' . $action; }
/** * @dataProvider dataProvider * * @return void */ public function testWithDifferentSeparator($camelCase, $separator, $expected) { $filter = new CamelCaseToSeparatorFilter($separator); $this->assertEquals($expected, $filter->filter($camelCase)); }