Procházet zdrojové kódy

feat(hooks): 支持类级别的 Hook 注解监听

- 在遍历钩子类时,新增对类级别 Hook 注解的解析
- 通过反射获取类上的 Hook 属性,并注册事件监听
- 保留原有方法级别 Hook 注解的处理逻辑
- 提升扩展系统中事件绑定的灵活性和便捷性
runphp před 3 měsíci
rodič
revize
43b498928d
1 změnil soubory, kde provedl 4 přidání a 0 odebrání
  1. 4 0
      src/Service/HookAttributeService.php

+ 4 - 0
src/Service/HookAttributeService.php

@@ -34,6 +34,10 @@ readonly class HookAttributeService
             $hookClassList = $extension->getHooks();
             foreach ($hookClassList as $hookClass) {
                 $ref = new ReflectionClass($hookClass);
+                $classAttr = $ref->getAttributes(Hook::class);
+                foreach ($classAttr as $attr) {
+                    $this->event->listen($attr->newInstance()->hook, $hookClass);
+                }
                 foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $method) {
                     $attributes = $method->getAttributes(Hook::class);
                     foreach ($attributes as $attr) {