/**
* @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 可以正常執(zhí)行,rpcTest 提示沒有rpclient 變量。 已經(jīng)按照文檔修改配置config/container.php,并且重啟服務了,不知道什么原因。
只有Container::get() Container::make()創(chuàng)建的類實例才能自動注入。
如果你用的是 https://wenda.workerman.net/question/6057 里的RPC例子,想自動注入,把例子中
$instances[$class] = new $class;
改成
use support\bootstrap\Container; // 頭部記得加這個
$instances[$class] = Container::get($class);
我這邊是參考的http://www.wtbis.cn/doc/webman#/di這個注入寫法,參考 https://wenda.workerman.net/question/6057 這個問題自己封裝了一個rpc的client的service想自動注入到這個http的controller里