* @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:----uPQX2shBmET5kb81E9vcHP0k0GTSa2cT5+oUlXZzlM268I6JqXsG7Wg4oeCotZBk99BvBeuaTd75nymwydoIu/wD6lgMwLFmFkWEHT+0Ep3OnrF0pTKGw2AAQwLkam3oDaEL6bzE8bysCXvRaiVRY2OUis0xpctk2dbR9zK0qRsT2Db0aiemIw5H63siWRFUSxle4cXrSZZSkfyUFw6fkmd6chqTuCXiAvkufz3iC/YLc7gw8eFkIDWK7/y8TSZZCdqkpyXLIVfehhhjcfwQ2+nToHTJ+IdnZRjjzbyxANvzK+TFPZwrTgCwlg08DYK3wsVZ77kborxocFa9OEzGujT3lS8iLl+Q4X1N6zYPXeHhuHDyNo4J6apjYIhze166AOyXh5um2S5Jci3Ij2Zv8/pwIwTLQjzY2s7egRbmuHKvllrJPBK3MF0Yfg57sgV9DB5+QZorUqTxCxlpJdlq2WWyReWO/FhPjpvtDlIkvquFg9G9SchWhOqlFEHSrmzSEKgBivsmm104L4YkgXpnVFKTnDpWJcpddRDWkcBIjCgbhcyaurFXCAAmdQqMDyzrbCFeX81hTbs/fmTN4+OhHNL+KktI/UHam1YSJzLUuhZnzn1ZI2lQL6imf5JpweDo2qRrpJGszG7c8+Yw7odEAVeIgu54fiQhkESOjNBWwds=----ATTACHMENT:----Nzk3NTA1NzE0ODAyMjA2MSA2MDcxMTM3Nzk1MTM2OTU0IDY0NjA4MTMyMjc5OTQ3ODk=