diff --git a/Extractor/ApiDocExtractor.php b/Extractor/ApiDocExtractor.php index 133a2d5..445b3ed 100644 --- a/Extractor/ApiDocExtractor.php +++ b/Extractor/ApiDocExtractor.php @@ -390,6 +390,9 @@ class ApiDocExtractor * - Array parameters are recursively merged. * - Non-null default values prevail over null default values. Later values overrides previous defaults. * + * However, if newly-returned parameter array contains a parameter with NULL, the parameter is removed from the merged results. + * If the parameter is not present in the newly-returned array, then it is left as-is. + * * @param array $p1 The pre-existing parameters array. * @param array $p2 The newly-returned parameters array. * @return array The resulting, merged array. @@ -399,9 +402,15 @@ class ApiDocExtractor $params = $p1; foreach ($p2 as $propname => $propvalue) { + + if ($propvalue === null) { + unset($params[$propname]); + continue; + } + if (!isset($p1[$propname])) { $params[$propname] = $propvalue; - } else { + } elseif (is_array($propvalue)) { $v1 = $p1[$propname]; foreach ($propvalue as $name => $value) { diff --git a/Resources/config/services.xml b/Resources/config/services.xml index da00c21..dbd694b 100644 --- a/Resources/config/services.xml +++ b/Resources/config/services.xml @@ -13,6 +13,8 @@ Nelmio\ApiDocBundle\Extractor\Handler\JmsSecurityExtraHandler Nelmio\ApiDocBundle\Extractor\Handler\SensioFrameworkExtraHandler Nelmio\ApiDocBundle\Extractor\Handler\PhpDocHandler + + Nelmio\ApiDocBundle\Parser\CollectionParser @@ -52,6 +54,10 @@ + + + +