getAnnotationsOfType(Schema::class); foreach ($schemas as $schema) { if ($schema->_context->is('class') || $schema->_context->is('trait')) { $source = $schema->_context->class ?: $schema->_context->trait; $traits = $analysis->getTraitsOfClass($schema->_context->fullyQualifiedName($source), true); foreach ($traits as $trait) { $traitSchema = $analysis->getSchemaForSource($trait['context']->fullyQualifiedName($trait['trait'])); if ($traitSchema) { $refPath = $traitSchema->schema !== Generator::UNDEFINED ? $traitSchema->schema : $trait['trait']; if ($schema->allOf === Generator::UNDEFINED) { $schema->allOf = []; } $schema->allOf[] = new Schema([ '_context' => $trait['context']->_context, 'ref' => Components::SCHEMA_REF . Util::refEncode($refPath), ]); } } } } } }