62 lines
1.4 KiB
PHP
62 lines
1.4 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
/**
|
|
* @license Apache 2.0
|
|
*/
|
|
|
|
namespace OpenApi\Annotations;
|
|
|
|
use OpenApi\Logger;
|
|
|
|
/**
|
|
* @Annotation
|
|
* The description of an item in a Schema with type "array"
|
|
*/
|
|
class Items extends Schema
|
|
{
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static $_nested = [
|
|
Discriminator::class => 'discriminator',
|
|
Items::class => 'items',
|
|
Property::class => ['properties', 'property'],
|
|
ExternalDocumentation::class => 'externalDocs',
|
|
Xml::class => 'xml',
|
|
AdditionalProperties::class => 'additionalProperties',
|
|
];
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public static $_parents = [
|
|
Property::class,
|
|
AdditionalProperties::class,
|
|
Schema::class,
|
|
JsonContent::class,
|
|
XmlContent::class,
|
|
Items::class,
|
|
];
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function validate(array $parents = [], array $skip = [], string $ref = ''): bool
|
|
{
|
|
if (in_array($this, $skip, true)) {
|
|
return true;
|
|
}
|
|
|
|
$valid = parent::validate($parents, $skip);
|
|
|
|
$parent = end($parents);
|
|
if ($parent instanceof Schema && $parent->type !== 'array') {
|
|
Logger::notice('@OA\\Items() parent type must be "array" in ' . $this->_context);
|
|
$valid = false;
|
|
}
|
|
|
|
return $valid;
|
|
// @todo Additional validation when used inside a Header or Parameter context.
|
|
}
|
|
}
|