Skip to content
Snippets Groups Projects
Unverified Commit 959bf0d1 authored by Roeland Jago Douma's avatar Roeland Jago Douma
Browse files

Cache the build ControllerName

Often a route.php file will have many N routes but only M controllers.
Where N >= M. Which means that in most cases the ControllerName will be
converted multiple times. This is of course far from ideal.

Note that this is per app so the cache will contain at most N entries.
Which is not to bad.
parent ef4eaaee
No related branches found
No related tags found
No related merge requests found
...@@ -36,14 +36,25 @@ use OCP\Route\IRouter; ...@@ -36,14 +36,25 @@ use OCP\Route\IRouter;
* @package OC\AppFramework\routing * @package OC\AppFramework\routing
*/ */
class RouteConfig { class RouteConfig {
/** @var DIContainer */
private $container; private $container;
/** @var IRouter */
private $router; private $router;
/** @var array */
private $routes; private $routes;
/** @var string */
private $appName; private $appName;
/** @var string[] */
private $controllerNameCache = [];
/** /**
* @param \OC\AppFramework\DependencyInjection\DIContainer $container * @param \OC\AppFramework\DependencyInjection\DIContainer $container
* @param \OCP\Route\IRouter $router * @param \OCP\Route\IRouter $router
* @param array $routes
* @internal param $appName * @internal param $appName
*/ */
public function __construct(DIContainer $container, IRouter $router, $routes) { public function __construct(DIContainer $container, IRouter $router, $routes) {
...@@ -234,7 +245,10 @@ class RouteConfig { ...@@ -234,7 +245,10 @@ class RouteConfig {
*/ */
private function buildControllerName($controller) private function buildControllerName($controller)
{ {
return $this->underScoreToCamelCase(ucfirst($controller)) . 'Controller'; if (!isset($this->controllerNameCache[$controller])) {
$this->controllerNameCache[$controller] = $this->underScoreToCamelCase(ucfirst($controller)) . 'Controller';
}
return $this->controllerNameCache[$controller];
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment