Allow parsers to remove/replace root parameters.

This commit is contained in:
Bez Hermoso 2014-07-28 13:14:59 -07:00
parent 8fe99a9c45
commit 06cfe9d48b
2 changed files with 16 additions and 1 deletions

View File

@ -390,6 +390,9 @@ class ApiDocExtractor
* - Array parameters are recursively merged. * - Array parameters are recursively merged.
* - Non-null default values prevail over null default values. Later values overrides previous defaults. * - 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 $p1 The pre-existing parameters array.
* @param array $p2 The newly-returned parameters array. * @param array $p2 The newly-returned parameters array.
* @return array The resulting, merged array. * @return array The resulting, merged array.
@ -399,9 +402,15 @@ class ApiDocExtractor
$params = $p1; $params = $p1;
foreach ($p2 as $propname => $propvalue) { foreach ($p2 as $propname => $propvalue) {
if ($propvalue === null) {
unset($params[$propname]);
continue;
}
if (!isset($p1[$propname])) { if (!isset($p1[$propname])) {
$params[$propname] = $propvalue; $params[$propname] = $propvalue;
} else { } elseif (is_array($propvalue)) {
$v1 = $p1[$propname]; $v1 = $p1[$propname];
foreach ($propvalue as $name => $value) { foreach ($propvalue as $name => $value) {

View File

@ -13,6 +13,8 @@
<parameter key="nelmio_api_doc.extractor.handler.jms_security.class">Nelmio\ApiDocBundle\Extractor\Handler\JmsSecurityExtraHandler</parameter> <parameter key="nelmio_api_doc.extractor.handler.jms_security.class">Nelmio\ApiDocBundle\Extractor\Handler\JmsSecurityExtraHandler</parameter>
<parameter key="nelmio_api_doc.extractor.handler.sensio_framework_extra.class">Nelmio\ApiDocBundle\Extractor\Handler\SensioFrameworkExtraHandler</parameter> <parameter key="nelmio_api_doc.extractor.handler.sensio_framework_extra.class">Nelmio\ApiDocBundle\Extractor\Handler\SensioFrameworkExtraHandler</parameter>
<parameter key="nelmio_api_doc.extractor.handler.phpdoc.class">Nelmio\ApiDocBundle\Extractor\Handler\PhpDocHandler</parameter> <parameter key="nelmio_api_doc.extractor.handler.phpdoc.class">Nelmio\ApiDocBundle\Extractor\Handler\PhpDocHandler</parameter>
<parameter key="nelmio_api_doc.parser.collection_parser.class">Nelmio\ApiDocBundle\Parser\CollectionParser</parameter>
</parameters> </parameters>
<services> <services>
@ -52,6 +54,10 @@
<argument type="service" id="nelmio_api_doc.doc_comment_extractor" /> <argument type="service" id="nelmio_api_doc.doc_comment_extractor" />
<tag name="nelmio_api_doc.extractor.handler"/> <tag name="nelmio_api_doc.extractor.handler"/>
</service> </service>
<service id="nelmio_api_doc.parser.collection_parser" class="%nelmio_api_doc.parser.collection_parser.class%">
<tag name="nelmio_api_doc.extractor.parser" />
</service>
</services> </services>
</container> </container>