1: <?php declare(strict_types = 1);
2:
3: namespace ApiGen\Index;
4:
5: use ApiGen\Info\ClassInfo;
6: use ApiGen\Info\ClassLikeInfo;
7: use ApiGen\Info\EnumInfo;
8: use ApiGen\Info\FunctionInfo;
9: use ApiGen\Info\InterfaceInfo;
10: use ApiGen\Info\TraitInfo;
11:
12:
13: class Index
14: {
15: /** @var FileIndex[] indexed by [filePath] */
16: public array $files = [];
17:
18: /** @var NamespaceIndex[] indexed by [namespaceName] */
19: public array $namespace = [];
20:
21: /** @var ClassLikeInfo[] indexed by [classLikeName] */
22: public array $classLike = [];
23:
24: /** @var ClassInfo[] indexed by [className] */
25: public array $class = [];
26:
27: /** @var InterfaceInfo[] indexed by [interfaceName] */
28: public array $interface = [];
29:
30: /** @var TraitInfo[] indexed by [traitName] */
31: public array $trait = [];
32:
33: /** @var EnumInfo[] indexed by [enumName] */
34: public array $enum = [];
35:
36: /** @var FunctionInfo[] indexed by [functionName] */
37: public array $function = [];
38:
39: /** @var ClassInfo[][] indexed by [classLikeName][classLikeName] */
40: public array $classExtends = [];
41:
42: /** @var ClassInfo[][] indexed by [classLikeName][classLikeName] */
43: public array $classImplements = [];
44:
45: /** @var ClassInfo[][] indexed by [classLikeName][classLikeName] */
46: public array $classUses = [];
47:
48: /** @var InterfaceInfo[][] indexed by [classLikeName][classLikeName] */
49: public array $interfaceExtends = [];
50:
51: /** @var EnumInfo[][] indexed by [classLikeName][classLikeName] */
52: public array $enumImplements = [];
53:
54: /** @var ClassLikeInfo[][] indexed by [classLikeName][classLikeName] classExtends + classImplements + classUses + interfaceExtends + enumImplements */
55: public array $dag = [];
56:
57: /** @var ClassLikeInfo[][] indexed by [classLikeName][classLikeName], e.g. ['a']['b'] means that B instance of A */
58: public array $instanceOf = [];
59:
60: /** @var ClassLikeInfo[][] indexed by [constantName][] */
61: public array $constants = [];
62:
63: /** @var ClassLikeInfo[][] indexed by [propertyName][] */
64: public array $properties = [];
65:
66: /** @var ClassLikeInfo[][] indexed by [methodName][] */
67: public array $methods = [];
68:
69: /** @var ClassLikeInfo[][][] indexed by [classLikeName][methodName], e.g. ['a']['b'] = [C] means method A::b is overriding C::b */
70: public array $methodOverrides = [];
71:
72: /** @var ClassLikeInfo[][][] indexed by [classLikeName][methodName][], e.g. ['c']['b'] = [A] means method C::b is overridden by A::b */
73: public array $methodOverriddenBy = [];
74:
75: /** @var ClassLikeInfo[][][] indexed by [classLikeName][methodName], e.g. ['a']['b'] = [C] means method A::b is implementing C::b */
76: public array $methodImplements = [];
77:
78: /** @var ClassLikeInfo[][][] indexed by [classLikeName][methodName][], e.g. ['c']['b'] = [A] means method C::b is implemented by A::b */
79: public array $methodImplementedBy = [];
80: }
81: