当前位置: 首页 > 后端技术 > PHP

laravel-hprose(rpc框架)

时间:2023-03-29 19:01:22 PHP

Laravel-hprose是基于hprose/hprose-php开发的Laravel扩展:laravel-hprose版本要求Laravel>=5.2安装composerrequire"zhuqipeng/laravel-hprose:v1.0-alpha"或者编辑composer.json"require":{"zhuqipeng/laravel-hprose":"v1.0-alpha"}配置在config/app.php中注册ServiceProvider和Facade(Laravel5.5不需要手动注册)'providers'=>[//...zhuqipeng\LaravelHprose\ServiceProvider::class,]'aliases'=>[//...'LaravelHproseMethodManage'=>朱启鹏\LaravelHprose\Facades\HproseMethodManage::class,]配置.env文件监听地址列表,stringjson格式数组HPROSE_URIS=["tcp://0.0.0.0:1314"]是否启用demo方法,true为启用,false为禁用,启用后会自动对外发布一个远程调用方法。演示客户端可以调用:$client->demo()HPROSE_DEMO=true//trueorfalse创建配置和路由文件:phpartisanvendor:publish--provider="Zhuqipeng\LaravelHprose\ServiceProvider"新建文件hprose.php将在应用程序根目录下的config目录下自动生成新文件rpc.php,使用类似laravel路由的路由。基于dingo/api对路由代码进行简单修改。路由文件routes/rpc.php添加路由方法\LaravelHproseRouter::add(string$name,string|callable$action,array$options=[]);细绳$name客户端可以远程调用的方法名string|callable$action类方法,格式:AppControllersUser@updatearray$options是一个关联数组,里面包含了服务功能的一些特殊设置,参考hprose-php详情官方文档介绍链接发布远程调用方法getUserByName和update\LaravelHproseRouter::add('getUserByName',function($name){return'name:'.$name;});\LaravelHproseRouter::add('userUpdate','App\Controllers\User@update',['model'=>\Hprose\ResultMode::Normal]);ControllergetUserByName('zhuqipeng');$client->userUpdate('zhuqipeng');路由组\LaravelHproseRouter::group(array$attributes,callable$callback);array$attributesproperty['namespace'=>'','prefix'=>'']可调用$callback回调函数\LaravelHproseRouter::group(['namespace'=>'App\Controllers'],function($route){$route->add('getUserByName',function($name){return'name:'.$name;});$route->add('userUpdate','User@update');});客户端调用$client->getUserByName('zhuqipeng');$client->userUpdate('zhuqipeng');prefix\LaravelHproseRouter::group(['namespace'=>'App\Controllers','prefix'=>'user'],function($route){$route->add('getByName',function($name){return'name:'.$name;});$route->add('update','User@update');});客户端调用$client->user->getByName('zhuqipeng');$client->user->update('zhuqipeng');//或者$client->user_getByName('zhuqipeng');$client->user_update('朱启朋');启动服务phpartisanhprose:socket_server