【已解决】webman GatewayWorker插件无法使用注解注入

Caesar-Tang

问题描述

webman service类中使用注解注入调用dao的方法,走api是可以的。但结合GatewayWorker插件,在 Event 中调用 service 类的方法,会提示dao属性 must not be accessed before initialization。应该如何解决?

程序代码

截图
截图
截图

报错信息

截图

操作系统及workerman/webman等框架组件具体版本

"php": ">=8.0",
"workerman/webman-framework": "1.6.6",
"monolog/monolog": "^2.0",
"psr/container": "1.1.1",
"php-di/php-di": "^6.4",
"doctrine/annotations": "^1.13",
"vlucas/phpdotenv": "^5.4",
"topthink/think-validate": "^2.0",
"webman/cors": "^1.0",
"symfony/uid": "^6.0",
"webman/event": "^1.0",
"illuminate/database": "^9.39",
"illuminate/redis": "9.39",
"illuminate/events": "^9.39",
"illuminate/pagination": "^9.39",
"aliyuncs/oss-sdk-php": "^2.7",
"alibabacloud/green-20220302": "^2.19",
"alibabacloud/dysmsapi-20170525": "3.1.1",
"workbunny/webman-rabbitmq": "^2.3",
"guzzlehttp/guzzle": "7.9",
"wechatpay/wechatpay": "1.4.8",
"webman/gateway-worker": "^1.0"

解决方案

Event 中使用下面的方式:
// Container创建的实例可以依赖注入
$user_service = Container::get(UserService::class);
// Container创建的实例可以依赖注入
$log_service = Container::make(LogService::class, [$path, $name]);

67 0 0
0个回答

×
🔝