From f4a9ad7ef798dfd5a40c55206a405f1b87965a83 Mon Sep 17 00:00:00 2001 From: David Buchmann Date: Thu, 28 Dec 2017 10:46:05 +0100 Subject: [PATCH] do not fail if phpdocumentor is not available --- DependencyInjection/NelmioApiDocExtension.php | 16 ++++++++++------ ModelDescriber/JMSModelDescriber.php | 6 ++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/DependencyInjection/NelmioApiDocExtension.php b/DependencyInjection/NelmioApiDocExtension.php index cfc2796..f5add0f 100644 --- a/DependencyInjection/NelmioApiDocExtension.php +++ b/DependencyInjection/NelmioApiDocExtension.php @@ -88,14 +88,18 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI // JMS metadata support if ($config['models']['use_jms']) { + $arguments = [ + new Reference('jms_serializer.metadata_factory'), + new Reference('jms_serializer.naming_strategy'), + new Reference('nelmio_api_doc.model_describers.swagger_property_annotation_reader'), + ]; + // phpdocumentor is not a hard requirement, only use if available + if (class_exists(DocBlockFactory::class)) { + $arguments[] = new Reference('nelmio_api_doc.model_describers.phpdoc_property_annotation_reader'); + } $container->register('nelmio_api_doc.model_describers.jms', JMSModelDescriber::class) ->setPublic(false) - ->setArguments([ - new Reference('jms_serializer.metadata_factory'), - new Reference('jms_serializer.naming_strategy'), - new Reference('nelmio_api_doc.model_describers.swagger_property_annotation_reader'), - new Reference('nelmio_api_doc.model_describers.phpdoc_property_annotation_reader'), - ]) + ->setArguments($arguments) ->addTag('nelmio_api_doc.model_describer', ['priority' => 50]); } diff --git a/ModelDescriber/JMSModelDescriber.php b/ModelDescriber/JMSModelDescriber.php index 9c7d723..ce099a6 100644 --- a/ModelDescriber/JMSModelDescriber.php +++ b/ModelDescriber/JMSModelDescriber.php @@ -41,7 +41,7 @@ class JMSModelDescriber implements ModelDescriberInterface, ModelRegistryAwareIn MetadataFactoryInterface $factory, PropertyNamingStrategyInterface $namingStrategy, SwaggerPropertyAnnotationReader $swaggerPropertyAnnotationReader, - PhpdocPropertyAnnotationReader $phpdocPropertyAnnotationReader + PhpdocPropertyAnnotationReader $phpdocPropertyAnnotationReader = null ) { $this->factory = $factory; $this->namingStrategy = $namingStrategy; @@ -107,7 +107,9 @@ class JMSModelDescriber implements ModelDescriberInterface, ModelRegistryAwareIn // read property options from Swagger Property annotation if it exists if (null !== $item->reflection) { - $this->phpdocPropertyAnnotationsReader->updateWithPhpdoc($item->reflection, $realProp); + if ($this->phpdocPropertyAnnotationsReader) { + $this->phpdocPropertyAnnotationsReader->updateWithPhpdoc($item->reflection, $realProp); + } $this->swaggerPropertyAnnotationReader->updateWithSwaggerPropertyAnnotation($item->reflection, $realProp); } }