> * @internal */ public static array $_list = []; /** * 存取注解对象的三维列表,key1是注解所在的类名,key2是注解所在的方法名,value是该方法标注的注解们(数组) * * @var array>> * @internal */ public static array $_map = []; public static function loadAnnotationList(array $list): void { self::$_list = array_merge_recursive(self::$_list, $list); } public static function loadAnnotationMap(array $map): void { self::$_map = array_merge_recursive(self::$_map, $map); } /** * @return AnnotationBase[] */ public static function getAnnotationList(string $class_name): array { return self::$_list[$class_name] ?? []; } /** * 排序所有的注解 */ public static function sortAnnotationList(): void { foreach (self::$_list as $class => $annotations) { if (is_a($class, Level::class, true)) { usort(self::$_list[$class], function ($a, $b) { $left = $a->getLevel(); /** @phpstan-ignore-line */ $right = $b->getLevel(); /* @phpstan-ignore-line */ return $left > $right ? -1 : ($left == $right ? 0 : 1); }); } } } }