bindRpcInterface(); run(function () { $this->app->invoke([$this, 'handle']); }); } protected function bindRpcInterface() { //引入rpc接口文件 if (file_exists($rpc = $this->app->getBasePath() . 'rpc.php')) { $rpcServices = (array) include $rpc; //绑定rpc接口 try { foreach ($rpcServices as $name => $abstracts) { $config = $this->app->config->get("swoole.rpc.client.{$name}", []); $parserClass = Arr::pull($config, 'parser', JsonParser::class); $tries = Arr::pull($config, 'tries', 2); $middleware = Arr::pull($config, 'middleware', []); $parser = $this->app->make($parserClass); $gateway = new Gateway($config, $parser, $tries); foreach ($abstracts as $abstract) { $this->app->bind($abstract, function (App $app) use ($middleware, $gateway, $name, $abstract) { return $app->invokeClass(Proxy::getClassName($name, $abstract), [$gateway, $middleware]); }); } } } catch (Throwable $e) { } } } }