1<?php
2
3declare(strict_types=1);
4
5namespace Metadata;
6
7/**
8 * Interface for Metadata Factory implementations.
9 *
10 * @author Johannes M. Schmitt <schmittjoh@gmail.com>
11 */
12interface MetadataFactoryInterface
13{
14    /**
15     * Returns the gathered metadata for the given class name.
16     *
17     * If the drivers return instances of MergeableClassMetadata, these will be
18     * merged prior to returning. Otherwise, all metadata for the inheritance
19     * hierarchy will be returned as ClassHierarchyMetadata unmerged.
20     *
21     * If no metadata is available, null is returned.
22     *
23     * @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingReturnTypeHint
24     * @phpcsSuppress SlevomatCodingStandard.TypeHints.TypeHintDeclaration.UselessReturnAnnotation
25     *
26     * @return ClassHierarchyMetadata|MergeableClassMetadata|null
27     */
28    public function getMetadataForClass(string $className);
29}
30