让你的程序提供 Rpc能力很简单 配置 ``` 'rpc_service'=>[ 'open'=>true, ] ``` 这样就可以了, 下面开始编程 ## Rpc 接口包 在自己项目外在开个项目(包), 这个包Rpc提供方的项目和 使用 Rpc 使用方的项目,都会依赖于这个包 包结构如下 ![](https://box.kancloud.cn/64363fdc9d82353e258cac1a68fb09d9_552x226.png =400x) ### 接口 ``` interface ITestService { public function test($name,$age); } ``` ### 降级服务 ``` class TestServiceDegrade implements ITestService { public function test($name, $age) { return '我是降级服务,当服务不可用时会调用我'; } } ``` ### Rpc注册器 ``` class TestRpcRegister implements RpcRegister { //返回 [接口1=>降级服务1, // 接口2=>降级服务2 // ] //如果懒提供方不提供降级服务 //返回 [接口1=>降级服务1, // 接口2, //服务2没有降级服务 // 接口3=>降级服务3, // ] public function register() { return [ ITestService::class=>TestServiceDegrade::class ]; } } ``` ## 下面在自己项目里写接口实现 写实现 >[info] 注意必须实现RPCable接口声明该类是对外提供的 ``` class TestServiceImpl implements ITestService ,RPCable { public function test($name, $age) { return '我是提供方'; } } ``` 注入到 Ioc里 ``` Ioc::bind(ITestService::class,TestServiceImpl::class); ```