Skip to content

Commit 065b80c

Browse files
committed
Handle nested unknown schemas
1 parent f4839ab commit 065b80c

2 files changed

Lines changed: 19 additions & 10 deletions

File tree

src/Generator.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,17 @@ private function all(string $namespace): iterable
176176
);
177177
}
178178

179-
foreach ($schemaRegistry->unknownSchemas() as $schema) {
180-
yield from Schema::generate(
181-
$schema['name'],
182-
$this->dirname($namespace . 'Schema/' . $schema['className']),
183-
$this->basename($namespace . 'Schema/' . $schema['className']),
184-
$schema['schema'],
185-
$schemaRegistry,
186-
$namespace . 'Schema'
187-
);
179+
while ($schemaRegistry->hasUnknownSchemas()) {
180+
foreach ($schemaRegistry->unknownSchemas() as $schema) {
181+
yield from Schema::generate(
182+
$schema['name'],
183+
$this->dirname($namespace . 'Schema/' . $schema['className']),
184+
$this->basename($namespace . 'Schema/' . $schema['className']),
185+
$schema['schema'],
186+
$schemaRegistry,
187+
$namespace . 'Schema'
188+
);
189+
}
188190
}
189191
}
190192

src/SchemaRegistry.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,15 @@ public function get(\cebe\openapi\spec\Schema $schema, string $fallbackName = ''
4949
return $className;
5050
}
5151

52+
public function hasUnknownSchemas(): bool
53+
{
54+
return count($this->unknownSchemas) > 0;
55+
}
56+
5257
public function unknownSchemas(): iterable
5358
{
54-
yield from $this->unknownSchemas;
59+
$unknownSchemas = $this->unknownSchemas;
60+
$this->unknownSchemas = [];
61+
yield from $unknownSchemas;
5562
}
5663
}

0 commit comments

Comments
 (0)