Merge pull request #695 from ogizanagi/fix_callable_controllers

Fix ApiDocExtractor to accept callable classes as controllers
This commit is contained in:
William Durand 2015-08-13 09:46:00 +02:00
commit 874c8752e6

View File

@ -211,14 +211,20 @@ class ApiDocExtractor
if (preg_match('#(.+)::([\w]+)#', $controller, $matches)) { if (preg_match('#(.+)::([\w]+)#', $controller, $matches)) {
$class = $matches[1]; $class = $matches[1];
$method = $matches[2]; $method = $matches[2];
} elseif (preg_match('#(.+):([\w]+)#', $controller, $matches)) { } else {
if (preg_match('#(.+):([\w]+)#', $controller, $matches)) {
$controller = $matches[1]; $controller = $matches[1];
$method = $matches[2]; $method = $matches[2];
}
if ($this->container->has($controller)) { if ($this->container->has($controller)) {
$this->container->enterScope('request'); $this->container->enterScope('request');
$this->container->set('request', new Request(), 'request'); $this->container->set('request', new Request(), 'request');
$class = ClassUtils::getRealClass(get_class($this->container->get($controller))); $class = ClassUtils::getRealClass(get_class($this->container->get($controller)));
$this->container->leaveScope('request'); $this->container->leaveScope('request');
if (!isset($method) && method_exists($class, '__invoke')) {
$method = '__invoke';
}
} }
} }