From 56d2a527061cef93ed05156226dc4e15466f6cde Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Fri, 25 Mar 2022 19:02:43 +0800 Subject: [PATCH 1/2] Fix OnSetup Attribute execution bug (build 452, release 2.7.3) --- src/ZM/ConsoleApplication.php | 2 +- src/ZM/script_setup_loader.php | 18 +++--------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/ZM/ConsoleApplication.php b/src/ZM/ConsoleApplication.php index f79fef81..42aa8fe7 100644 --- a/src/ZM/ConsoleApplication.php +++ b/src/ZM/ConsoleApplication.php @@ -28,7 +28,7 @@ use ZM\Exception\InitException; class ConsoleApplication extends Application { - public const VERSION_ID = 451; + public const VERSION_ID = 452; public const VERSION = '2.7.3'; diff --git a/src/ZM/script_setup_loader.php b/src/ZM/script_setup_loader.php index eaa9a7d5..cae434b6 100644 --- a/src/ZM/script_setup_loader.php +++ b/src/ZM/script_setup_loader.php @@ -3,6 +3,8 @@ declare(strict_types=1); use Doctrine\Common\Annotations\AnnotationReader; +use Koriym\Attributes\AttributeReader; +use Koriym\Attributes\DualReader; use ZM\Annotation\Swoole\OnSetup; use ZM\Annotation\Swoole\SwooleHandler; use ZM\ConsoleApplication; @@ -36,7 +38,7 @@ try { $all_event_class = array_merge($all_event_class, ZMUtil::getClassesPsr4($autoload_path, $namespace)); } - $reader = new AnnotationReader(); + $reader = new DualReader(new AnnotationReader(), new AttributeReader()); $event_list = []; $setup_list = []; foreach ($all_event_class as $v) { @@ -68,17 +70,3 @@ try { fclose($stderr); exit(1); } - -/* -记迷惑,这里的代码是不是可以放到一个单独的文件里面,这样就不会出现每次都要重新加载的问题了? -然后这个文件就实现了,就是这个。 -但是还有个什么问题呢?为了 reload 牺牲了太多太多,但是关键时刻好像又不是很能用到。 -但又不能没有。 -所以我很纠结很纠结。 -如何让用户的代码能像 php-fpm 那样随时重置呢? -我不知道诶。 -那这段代码干了个啥? -在最开始单独启动进程,加载一遍所有类,获取需要在启动前就执行的类,然后在启动的时候执行。 -这样就可以不在爷进程里面加载所有类,在爹进程里面 Fork 的子进程再加载所有类,每次 reload 时可以重新加载了。 -以上均为乱写的,请勿完全当真,本人对待框架代码还是比较认真的。 -*/ From d3f4ade215f490ccc11e57ac8aa521ea1cf24add Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Fri, 25 Mar 2022 19:15:58 +0800 Subject: [PATCH 2/2] Add Attribute and property (build 453, release 2.7.3) --- src/ZM/Annotation/Swoole/OnTick.php | 2 ++ src/ZM/Annotation/Swoole/SwooleHandler.php | 2 ++ src/ZM/ConsoleApplication.php | 2 +- src/ZM/Http/MiddlewareInterface.php | 5 +++++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ZM/Annotation/Swoole/OnTick.php b/src/ZM/Annotation/Swoole/OnTick.php index 26965dca..dc56bd61 100644 --- a/src/ZM/Annotation/Swoole/OnTick.php +++ b/src/ZM/Annotation/Swoole/OnTick.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace ZM\Annotation\Swoole; +use Attribute; use Doctrine\Common\Annotations\Annotation\NamedArgumentConstructor; use Doctrine\Common\Annotations\Annotation\Required; use Doctrine\Common\Annotations\Annotation\Target; @@ -16,6 +17,7 @@ use ZM\Annotation\AnnotationBase; * @Target("METHOD") * @since 1.2 */ +#[Attribute(Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] class OnTick extends AnnotationBase { /** diff --git a/src/ZM/Annotation/Swoole/SwooleHandler.php b/src/ZM/Annotation/Swoole/SwooleHandler.php index 4e5c6bc5..5a130094 100644 --- a/src/ZM/Annotation/Swoole/SwooleHandler.php +++ b/src/ZM/Annotation/Swoole/SwooleHandler.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace ZM\Annotation\Swoole; +use Attribute; use Doctrine\Common\Annotations\Annotation\NamedArgumentConstructor; use Doctrine\Common\Annotations\Annotation\Required; use Doctrine\Common\Annotations\Annotation\Target; @@ -15,6 +16,7 @@ use ZM\Annotation\AnnotationBase; * @NamedArgumentConstructor() * @Target("ALL") */ +#[Attribute(Attribute::TARGET_ALL)] class SwooleHandler extends AnnotationBase { /** diff --git a/src/ZM/ConsoleApplication.php b/src/ZM/ConsoleApplication.php index 42aa8fe7..4bd41330 100644 --- a/src/ZM/ConsoleApplication.php +++ b/src/ZM/ConsoleApplication.php @@ -28,7 +28,7 @@ use ZM\Exception\InitException; class ConsoleApplication extends Application { - public const VERSION_ID = 452; + public const VERSION_ID = 453; public const VERSION = '2.7.3'; diff --git a/src/ZM/Http/MiddlewareInterface.php b/src/ZM/Http/MiddlewareInterface.php index 65d01ab0..8d2e3313 100644 --- a/src/ZM/Http/MiddlewareInterface.php +++ b/src/ZM/Http/MiddlewareInterface.php @@ -4,6 +4,11 @@ declare(strict_types=1); namespace ZM\Http; +use ZM\Annotation\Http\Middleware; + +/** + * @property Middleware $middleware + */ interface MiddlewareInterface { }