AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>.namespace core\router\schema\objects;use core\router\schema\openapi_base;use core\router\schema\specification;/*** Part of the OpenAPI Schema.** @package core* @copyright 2023 Andrew Lyons <andrew@nicols.co.uk>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/abstract class type_base extends openapi_base {/*** Note: We do not implement the $example, because it has been deprecated in OpenApi 3.0.** @param array $examples* @param mixed[] ...$extra*/public function __construct(/** @var array Any examples that may be present for the type */protected array $examples = [],...$extra,) {parent::__construct(...$extra);}#[\Override]public function get_openapi_description(specification $api,?string $path = null,): ?\stdClass {$data = (object) [];if (count($this->examples)) {$data->examples = [];foreach ($this->examples as $example) {$data->examples[] = $example->get_openapi_schema(api: $api,);}}return $data;}/*** Get the additional OpenAPI properties if relevant.** @param string|null|type_base $type* @return bool|array*/protected function get_additional_properties(string|null|type_base $type): bool|array {// The additionalProperties are described here:// https://spec.openapis.org/oas/v3.1.0#schema-object-examples.if ($type === null) {return true;}if (is_a($type, self::class)) {// This type is a reference to another schema object.return ['$ref' => $type->get_reference(),];}// TODO MDL-82243: Validate against supported OpenAPI types.return ['type' => $type,];}/*** Validate the data against the type.** @param mixed $data*/abstract public function validate_data(mixed $data);}