Преглед на файлове

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

- 在遍历钩子类时,新增对类级别 Hook 注解的解析
- 通过反射获取类上的 Hook 属性,并注册事件监听
- 保留原有方法级别 Hook 注解的处理逻辑
- 提升扩展系统中事件绑定的灵活性和便捷性
runphp преди 3 месеца
родител
ревизия
43b498928d
променени са 1 файла, в които са добавени 4 реда и са изтрити 0 реда
  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) {