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:
- 7.0
- 7.1
- hhvm
sudo: false

View File

@ -11,20 +11,20 @@
namespace EXSyst\Bundle\ApiDocBundle;
use EXSyst\Bundle\ApiDocBundle\Extractor\ExtractorInterface;
use EXSyst\Bundle\ApiDocBundle\Describer\DescriberInterface;
use gossi\swagger\Swagger;
class ApiDocGenerator
{
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();
foreach ($this->extractors as $extractor) {
$extractor->extractIn($this->swagger);
foreach ($this->describers as $describer) {
$describer->describe($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\ContainerBuilder;
class AddExtractorsPass implements CompilerPassInterface
class AddDescribersPass implements CompilerPassInterface
{
use PriorityTaggedServiceTrait;
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\ContainerBuilder;
class AddRoutingExtractorsPass implements CompilerPassInterface
class AddRouteDescribersPass implements CompilerPassInterface
{
use PriorityTaggedServiceTrait;
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.
*/
namespace EXSyst\Bundle\ApiDocBundle\Extractor;
namespace EXSyst\Bundle\ApiDocBundle\Describer;
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.
*/
namespace EXSyst\Bundle\ApiDocBundle\Extractor;
namespace EXSyst\Bundle\ApiDocBundle\Describer;
use Doctrine\Common\Util\ClassUtils;
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\RouterInterface;
class RoutingExtractor implements ExtractorInterface
class RouteDescriber implements DescriberInterface
{
private $routeExtractors;
private $routeDescribers;
/**
* @param RouterInterface $router
* @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->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;
}
@ -44,8 +44,8 @@ class RoutingExtractor implements ExtractorInterface
// if able to resolve the controller
if ($method = $this->getReflectionMethod($route->getDefault('_controller'))) {
// Extract as many informations as possible about this route
foreach ($this->routeExtractors as $extractor) {
$extractor->extractIn($swagger, $route, $method);
foreach ($this->routeDescribers as $describer) {
$describer->describe($swagger, $route, $method);
}
}
}
@ -68,7 +68,7 @@ class RoutingExtractor implements ExtractorInterface
*
* @return \ReflectionMethod|null
*/
private function getReflectionMethod($controller)
private function getReflectionMethod(string $controller)
{
if (false === strpos($controller, '::') && 2 === substr_count($controller, ':')) {
$controller = $this->controllerNameParser->parse($controller);

View File

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

View File

@ -9,27 +9,27 @@
</service>
<!-- 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="controller_name_converter" />
<argument type="collection" />
<tag name="exsyst_api_doc.extractor" priority="-100" />
<tag name="exsyst_api_doc.describer" priority="-100" />
</service>
<!-- Routing Extractors -->
<service id="exsyst_api_doc.routing_extractors.route_metadata" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\RouteMetadataExtractor" public="false">
<tag name="exsyst_api_doc.routing_extractor" priority="-50" />
<service id="exsyst_api_doc.route_describers.route_metadata" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\RouteMetadataDescriber" public="false">
<tag name="exsyst_api_doc.route_describer" priority="-50" />
</service>
<service id="exsyst_api_doc.routing_extractors.php_doc" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\PhpDocExtractor" public="false">
<tag name="exsyst_api_doc.routing_extractor" priority="-70" />
<service id="exsyst_api_doc.route_describers.php_doc" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\PhpDocDescriber" public="false">
<tag name="exsyst_api_doc.route_describer" priority="-70" />
</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" />
<tag name="exsyst_api_doc.routing_extractor" priority="-100" />
<tag name="exsyst_api_doc.route_describer" priority="-100" />
</service>
</services>

View File

@ -9,7 +9,7 @@
* 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 gossi\swagger\Parameter;
@ -17,9 +17,9 @@ use gossi\swagger\Swagger;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use Symfony\Component\Routing\Route;
class NelmioAnnotationExtractor implements RouteExtractorInterface
class NelmioAnnotationDescriber implements RouteDescriberInterface
{
use RouteExtractorTrait;
use RouteDescriberTrait;
private $annotationReader;
@ -28,7 +28,7 @@ class NelmioAnnotationExtractor implements RouteExtractorInterface
$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);
if (null === $annotation) {

View File

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

View File

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

View File

@ -9,16 +9,16 @@
* file that was distributed with this source code.
*/
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing;
namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
use gossi\swagger\Swagger;
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) {
$operation->getSchemes()->addAll($route->getSchemes());