* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class SchemaResolver { /** * Removes all types from the schema definitions which are not used at the root schema * * @param SchemaInterface $schema * @return void */ public function resolve(SchemaInterface $schema): void { $types = []; $this->lookupTypes($schema->getType(), $types); foreach ($schema->getDefinitions()->getAllTypes() as $name => $type) { $this->lookupTypes($type, $types); } foreach ($schema->getDefinitions()->getAllTypes() as $name => $type) { if (!in_array($name, $types)) { $schema->getDefinitions()->removeType($name); } } } private function lookupTypes(TypeInterface $type, array &$types) { TypeUtil::walk($type, function(TypeInterface $type) use (&$types){ if (!$type instanceof ReferenceType) { return; } $name = TypeUtil::getFullyQualifiedName($type->getRef()); if (in_array($name, $types)) { // we have the type already return; } $types[] = $name; }); } } __halt_compiler();----SIGNATURE:----Ks3bTFc2Fq8bnD0FRpFlFizFzML4yDxMkBtD42TPqUWBj5AiLT/FajCjL7dIM0eTq0FIclDJbZeaRQsb+hqaw84Bj+bkmDanfId3C0RXsp3wzDG9VlkqHdLVIrwph0Z80wwSHLutb3p1O1CRg/EHg7E5kZtBngNN2oKnKT7HJGEqIUbfzHmhOvFjBEaIkuNTdUFIM6BTRDhhwREPiKT7uYxkO09X7J9ybJZFy8NdxheGMUEesdIgsBy76m2AjkydWYZcN7XVRGjIzJdST2DfMQqIzoO43qSmFsm918ibmIpvcfnx2pGzSDoW437kppM4R0n2twjUHN18Yso0x4CL5HbH7sjtdfA3V9lccTcJHVmYivQaWNTg2v6hZ9WKmfIndmDhtE/xtRD1dCrEFinRm5h6L9cDzn6wTdS7woksa1iO7r45uYWziXPfbMC1d9YhWKbn79nfCZYOS14SXrceQuSobr+RLBH5Cz+/H3J3mmIspHDL5CPL29X3vxe3MZdU1sDEx2FglGRthpyOGsFopdJJ92NW4lJsXiVGjWARUJAfCo77oJuWYlurKQdIkoWAuZdN/OYrnR210njOsWiWG1G0REAAZfSdglnXtfn9vOR8PwSADpZRsnkC5lYewKsaCSJ9YdD35tV/euIZZhNx/xE31S9I1qMnxs2mJIWDbOY=----ATTACHMENT:----MTgzMjkwNDI4NTc1NzY5NSA2NzYwNzM3OTM3MTY3NjgwIDc3MTk5MDMwMTUxMDEyMzQ=