webman注解注入失败

sourlime
/**
 * @Inject
 * @var RpcClient
 */
private $rpclient;

public function rpcTest(Request $request){
    $data = [
        'class'   => 'User',
        'method'  => 'get',
        'args'    => [100,'Tom',20], // 100 是 $uid,Tom 是 $name,20 是 $age
    ];
    $buffer = json_encode($data);
    $receive_data = $this->rpclient->client($buffer);
    return $receive_data;
}
public function rpcNewTest(Request $request){
    $new_rpclient = new RpcClient();
    $data = [
        'class'   => 'User',
        'method'  => 'get',
        'args'    => [100,'Tom',20], // 100 是 $uid,Tom 是 $name,20 是 $age
    ];
    $buffer = json_encode($data);
    $receive_data = $new_rpclient->client($buffer);
    return $receive_data;
}

rpcNewTest 可以正常执行,rpcTest 提示没有rpclient 变量。 已经按照文档修改配置config/container.php,并且重启服务了,不知道什么原因。

2187 2 0
2个回答

walkor

只有Container::get() Container::make()创建的类实例才能自动注入。

如果你用的是 https://wenda.workerman.net/question/6057 里的RPC例子,想自动注入,把例子中

 $instances[$class] = new $class;

改成

 use support\bootstrap\Container; // 头部记得加这个

 $instances[$class] = Container::get($class);
  • sourlime 2021-01-30

    我这边是参考的https://www.workerman.net/doc/webman#/di这个注入写法,参考 https://wenda.workerman.net/question/6057 这个问题自己封装了一个rpc的client的service想自动注入到这个http的controller里

  • sourlime 2021-01-30

    我写了一个RpcClient对应的是注入文档的Mailer的service,当前贴代码的文件相当于User的controller

sourlime

已解决

  • 暂无评论
年代过于久远,无法发表回答
🔝