LaLiga-BackEnd/vendor/nelmio/api-doc-bundle/PropertyDescriber/NullablePropertyTrait.php

56 lines
1.6 KiB
PHP

<?php
/*
* This file is part of the NelmioApiDocBundle package.
*
* (c) Nelmio
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Nelmio\ApiDocBundle\PropertyDescriber;
use Nelmio\ApiDocBundle\OpenApiPhp\Util;
use OpenApi\Annotations as OA;
use OpenApi\Generator;
use Symfony\Component\PropertyInfo\Type;
/**
* @deprecated Since 4.17, {@see NullablePropertyDescriber} instead.
*/
trait NullablePropertyTrait
{
protected function setNullableProperty(Type $type, OA\Schema $property, ?OA\Schema $schema, array $context = []): void
{
if (Generator::UNDEFINED !== $property->nullable) {
if (!$property->nullable) {
// if already false mark it as undefined (so it does not show up as `nullable: false`)
$property->nullable = Generator::UNDEFINED;
}
return;
}
if ($type->isNullable()) {
$property->nullable = true;
}
if (!$type->isNullable() && Generator::UNDEFINED !== $property->default) {
return;
}
if (!$type->isNullable() && null !== $schema) {
$propertyName = Util::getSchemaPropertyName($schema, $property);
if (null === $propertyName) {
return;
}
$existingRequiredFields = Generator::UNDEFINED !== $schema->required ? $schema->required : [];
$existingRequiredFields[] = $propertyName;
$schema->required = array_values(array_unique($existingRequiredFields));
}
}
}