/**
* @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,并且重啟服務(wù)了,不知道什么原因。
只有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里
我寫了一個RpcClient對應(yīng)的是注入文檔的Mailer的service,當(dāng)前貼代碼的文件相當(dāng)于User的controller