Add type hints

This commit is contained in:
Ener-Getick 2016-07-15 00:40:30 +02:00
parent 684eb375ae
commit d7c05edffc
No known key found for this signature in database
GPG Key ID: 9E5D2DB67BF054DD
13 changed files with 56 additions and 57 deletions

View File

@ -3,7 +3,6 @@ language: php
php: php:
- 7.0 - 7.0
- 7.1 - 7.1
- hhvm
sudo: false sudo: false

View File

@ -11,20 +11,20 @@
namespace EXSyst\Bundle\ApiDocBundle; namespace EXSyst\Bundle\ApiDocBundle;
use EXSyst\Bundle\ApiDocBundle\Extractor\ExtractorInterface; use EXSyst\Bundle\ApiDocBundle\Describer\DescriberInterface;
use gossi\swagger\Swagger; use gossi\swagger\Swagger;
class ApiDocGenerator class ApiDocGenerator
{ {
private $swagger; private $swagger;
private $extractors; private $describers;
/** /**
* @param ExtractorInterface[] $extractors * @param DescriberInterface[] $describers
*/ */
public function __construct(array $extractors) public function __construct(array $describers)
{ {
$this->extractors = $extractors; $this->describers = $describers;
} }
/** /**
@ -37,8 +37,8 @@ class ApiDocGenerator
} }
$this->swagger = new Swagger(); $this->swagger = new Swagger();
foreach ($this->extractors as $extractor) { foreach ($this->describers as $describer) {
$extractor->extractIn($this->swagger); $describer->describe($this->swagger);
} }
return $this->swagger; return $this->swagger;

View File

@ -15,14 +15,14 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait; use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
class AddExtractorsPass implements CompilerPassInterface class AddDescribersPass implements CompilerPassInterface
{ {
use PriorityTaggedServiceTrait; use PriorityTaggedServiceTrait;
public function process(ContainerBuilder $container) public function process(ContainerBuilder $container)
{ {
$extractors = $this->findAndSortTaggedServices('exsyst_api_doc.extractor', $container); $describers = $this->findAndSortTaggedServices('exsyst_api_doc.describer', $container);
$container->getDefinition('exsyst_api_doc.generator')->replaceArgument(0, $extractors); $container->getDefinition('exsyst_api_doc.generator')->replaceArgument(0, $describers);
} }
} }

View File

@ -15,14 +15,14 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait; use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
class AddRoutingExtractorsPass implements CompilerPassInterface class AddRouteDescribersPass implements CompilerPassInterface
{ {
use PriorityTaggedServiceTrait; use PriorityTaggedServiceTrait;
public function process(ContainerBuilder $container) public function process(ContainerBuilder $container)
{ {
$extractors = $this->findAndSortTaggedServices('exsyst_api_doc.routing_extractor', $container); $routeDescribers = $this->findAndSortTaggedServices('exsyst_api_doc.route_describer', $container);
$container->getDefinition('exsyst_api_doc.extractors.routing')->replaceArgument(2, $extractors); $container->getDefinition('exsyst_api_doc.describers.route')->replaceArgument(2, $routeDescribers);
} }
} }

View File

@ -9,11 +9,11 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace EXSyst\Bundle\ApiDocBundle\Extractor; namespace EXSyst\Bundle\ApiDocBundle\Describer;
use gossi\swagger\Swagger; use gossi\swagger\Swagger;
interface ExtractorInterface interface DescriberInterface
{ {
public function extractIn(Swagger $api); public function describe(Swagger $api);
} }

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace EXSyst\Bundle\ApiDocBundle\Extractor; namespace EXSyst\Bundle\ApiDocBundle\Describer;
use Doctrine\Common\Util\ClassUtils; use Doctrine\Common\Util\ClassUtils;
use EXSyst\Bundle\ApiDocBundle\Extractor\Routing\RouteExtractorInterface; use EXSyst\Bundle\ApiDocBundle\Extractor\Routing\RouteExtractorInterface;
@ -18,25 +18,25 @@ use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser;
use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Routing\RouterInterface;
class RoutingExtractor implements ExtractorInterface class RouteDescriber implements DescriberInterface
{ {
private $routeExtractors; private $routeDescribers;
/** /**
* @param RouterInterface $router * @param RouterInterface $router
* @param ControllerNameParser $controllerNameParser * @param ControllerNameParser $controllerNameParser
* @param RouteExtractorInterface[] $extractors * @param RouteDescriberInterface[] $routeDescribers
*/ */
public function __construct(RouterInterface $router, ControllerNameParser $controllerNameParser, array $routeExtractors) public function __construct(RouterInterface $router, ControllerNameParser $controllerNameParser, array $routeDescribers)
{ {
$this->router = $router; $this->router = $router;
$this->controllerNameParser = $controllerNameParser; $this->controllerNameParser = $controllerNameParser;
$this->routeExtractors = $routeExtractors; $this->routeDescribers = $routeDescribers;
} }
public function extractIn(Swagger $swagger) public function describe(Swagger $swagger)
{ {
if (0 === count($this->routeExtractors)) { if (0 === count($this->routeDescribers)) {
return; return;
} }
@ -44,8 +44,8 @@ class RoutingExtractor implements ExtractorInterface
// if able to resolve the controller // if able to resolve the controller
if ($method = $this->getReflectionMethod($route->getDefault('_controller'))) { if ($method = $this->getReflectionMethod($route->getDefault('_controller'))) {
// Extract as many informations as possible about this route // Extract as many informations as possible about this route
foreach ($this->routeExtractors as $extractor) { foreach ($this->routeDescribers as $describer) {
$extractor->extractIn($swagger, $route, $method); $describer->describe($swagger, $route, $method);
} }
} }
} }
@ -68,7 +68,7 @@ class RoutingExtractor implements ExtractorInterface
* *
* @return \ReflectionMethod|null * @return \ReflectionMethod|null
*/ */
private function getReflectionMethod($controller) private function getReflectionMethod(string $controller)
{ {
if (false === strpos($controller, '::') && 2 === substr_count($controller, ':')) { if (false === strpos($controller, '::') && 2 === substr_count($controller, ':')) {
$controller = $this->controllerNameParser->parse($controller); $controller = $this->controllerNameParser->parse($controller);

View File

@ -11,8 +11,8 @@
namespace EXSyst\Bundle\ApiDocBundle; namespace EXSyst\Bundle\ApiDocBundle;
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddExtractorsPass; use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddDescribersPass;
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddRoutingExtractorsPass; use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddRouteDescribersPass;
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\EXSystApiDocExtension; use EXSyst\Bundle\ApiDocBundle\DependencyInjection\EXSystApiDocExtension;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle; use Symfony\Component\HttpKernel\Bundle\Bundle;
@ -24,8 +24,8 @@ class EXSystApiDocBundle extends Bundle
*/ */
public function build(ContainerBuilder $container) public function build(ContainerBuilder $container)
{ {
$container->addCompilerPass(new AddExtractorsPass()); $container->addCompilerPass(new AddDescribersPass());
$container->addCompilerPass(new AddRoutingExtractorsPass()); $container->addCompilerPass(new AddRouteDescribersPass());
} }
/** /**

View File

@ -9,27 +9,27 @@
</service> </service>
<!-- Extractors --> <!-- Extractors -->
<service id="exsyst_api_doc.extractors.routing" class="EXSyst\Bundle\ApiDocBundle\Extractor\RoutingExtractor" public="false"> <service id="exsyst_api_doc.describers.route" class="EXSyst\Bundle\ApiDocBundle\Describer\RouteDescriber" public="false">
<argument type="service" id="router" /> <argument type="service" id="router" />
<argument type="service" id="controller_name_converter" /> <argument type="service" id="controller_name_converter" />
<argument type="collection" /> <argument type="collection" />
<tag name="exsyst_api_doc.extractor" priority="-100" /> <tag name="exsyst_api_doc.describer" priority="-100" />
</service> </service>
<!-- Routing Extractors --> <!-- Routing Extractors -->
<service id="exsyst_api_doc.routing_extractors.route_metadata" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\RouteMetadataExtractor" public="false"> <service id="exsyst_api_doc.route_describers.route_metadata" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\RouteMetadataDescriber" public="false">
<tag name="exsyst_api_doc.routing_extractor" priority="-50" /> <tag name="exsyst_api_doc.route_describer" priority="-50" />
</service> </service>
<service id="exsyst_api_doc.routing_extractors.php_doc" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\PhpDocExtractor" public="false"> <service id="exsyst_api_doc.route_describers.php_doc" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\PhpDocDescriber" public="false">
<tag name="exsyst_api_doc.routing_extractor" priority="-70" /> <tag name="exsyst_api_doc.route_describer" priority="-70" />
</service> </service>
<service id="exsyst_api_doc.routing_extractors.nelmio_annotation" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\NelmioAnnotationExtractor" public="false"> <service id="exsyst_api_doc.route_describers.nelmio_annotation" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\NelmioAnnotationDescriber" public="false">
<argument type="service" id="annotation_reader" /> <argument type="service" id="annotation_reader" />
<tag name="exsyst_api_doc.routing_extractor" priority="-100" /> <tag name="exsyst_api_doc.route_describer" priority="-100" />
</service> </service>
</services> </services>

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing; namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
use Doctrine\Common\Annotations\Reader; use Doctrine\Common\Annotations\Reader;
use gossi\swagger\Parameter; use gossi\swagger\Parameter;
@ -17,9 +17,9 @@ use gossi\swagger\Swagger;
use Nelmio\ApiDocBundle\Annotation\ApiDoc; use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Route;
class NelmioAnnotationExtractor implements RouteExtractorInterface class NelmioAnnotationDescriber implements RouteDescriberInterface
{ {
use RouteExtractorTrait; use RouteDescriberTrait;
private $annotationReader; private $annotationReader;
@ -28,7 +28,7 @@ class NelmioAnnotationExtractor implements RouteExtractorInterface
$this->annotationReader = $annotationReader; $this->annotationReader = $annotationReader;
} }
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod) public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
{ {
$annotation = $this->annotationReader->getMethodAnnotation($reflectionMethod, ApiDoc::class); $annotation = $this->annotationReader->getMethodAnnotation($reflectionMethod, ApiDoc::class);
if (null === $annotation) { if (null === $annotation) {

View File

@ -9,16 +9,16 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing; namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
use gossi\swagger\Swagger; use gossi\swagger\Swagger;
use phpDocumentor\Reflection\DocBlockFactory; use phpDocumentor\Reflection\DocBlockFactory;
use phpDocumentor\Reflection\DocBlockFactoryInterface; use phpDocumentor\Reflection\DocBlockFactoryInterface;
use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Route;
class PhpDocExtractor implements RouteExtractorInterface class PhpDocDescriber implements RouteDescriberInterface
{ {
use RouteExtractorTrait; use RouteDescriberTrait;
private $docBlockFactory; private $docBlockFactory;
@ -30,7 +30,7 @@ class PhpDocExtractor implements RouteExtractorInterface
$this->docBlockFactory = $docBlockFactory; $this->docBlockFactory = $docBlockFactory;
} }
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod) public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
{ {
$classDocBlock = null; $classDocBlock = null;
$docBlock = null; $docBlock = null;

View File

@ -9,12 +9,12 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing; namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
use gossi\swagger\Swagger; use gossi\swagger\Swagger;
use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Route;
interface RouteExtractorInterface interface RouteDescriberInterface
{ {
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod); public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod);
} }

View File

@ -9,7 +9,7 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing; namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
use gossi\swagger\Operation; use gossi\swagger\Operation;
use gossi\swagger\Swagger; use gossi\swagger\Swagger;
@ -18,7 +18,7 @@ use Symfony\Component\Routing\Route;
/** /**
* @internal * @internal
*/ */
trait RouteExtractorTrait trait RouteDescriberTrait
{ {
/** /**
* @internal * @internal

View File

@ -9,16 +9,16 @@
* file that was distributed with this source code. * file that was distributed with this source code.
*/ */
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing; namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
use gossi\swagger\Swagger; use gossi\swagger\Swagger;
use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Route;
class RouteMetadataExtractor implements RouteExtractorInterface class RouteMetadataDescriber implements RouteDescriberInterface
{ {
use RouteExtractorTrait; use RouteDescriberTrait;
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod) public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
{ {
foreach ($this->getOperations($api, $route) as $operation) { foreach ($this->getOperations($api, $route) as $operation) {
$operation->getSchemes()->addAll($route->getSchemes()); $operation->getSchemes()->addAll($route->getSchemes());