iras / lumen-hprose
Hprose for Lumen
dev-master
2021-07-05 04:05 UTC
Requires
- php: >=7.2.5
- ext-json: *
- ext-swoole: *
- hprose/hprose: ^2.0
- hprose/hprose-swoole: ^2.0
- laravel/lumen-framework: ^7.0|^8.0
- nunomaduro/collision: ^5.1
This package is auto-updated.
Last update: 2024-05-05 10:50:34 UTC
README
安装
composer require iras/lumen-hprose
配置
1、在 bootstrap/app.php 注册 服务组件
$app->register(\Iras\LumenHprose\ServiceProvider::class);2、复制config目录下的hprose.php到框架的config目录,根据注释修改配置
3、复制routes目录下的hprose.php到框架的routes目录
使用
添加路由方法
use Iras\LumenHprose\Facades\Router; Router::add(string $name, string|callable $action, array $options = []);
- $name string 方法名称(远程调用该名称)
- $action string|callable 例:Iras\LumenHprose\Controllers\DemoController@demo
- $options array 特殊设置
发布远程调用方法 demo
use Iras\LumenHprose\Facades\Router; Router::add('demo', 'Iras\LumenHprose\Controllers\DemoController@demo');具体的服务逻辑
<?php namespace Iras\LumenHprose\Controllers; /** * Class DemoController. */ class DemoController { /** * @return string */ public function demo(): string { return "demo"; } }
客户端调用
$client = new \Hprose\Socket\Client('tcp://127.0.0.1:8888', false); echo $client->demo();路由组添加参考hprose.php中的路由组添加(可添加路由前缀,和炉门框架路由组一样) 客户端调用
echo $client->demo->test();//有路由前缀 echo $client->test();//无前缀中间件(该包只实现了InvokeHandler 中间件,InvokeHandler中间件基本满足平常开发需要),更多中间件功能可以参考文档:https://github.com/hprose/hprose-php/wiki/12-Hprose-%E4%B8%AD%E9%97%B4%E4%BB%B6
中间件需要继承middleware下的InvokeHandler类
use Iras\LumenHprose\Middleware\InvokeHandler; use stdClass; /** * Class ServerLoggerInvokeHandler. */ final class TestMiddleware extends InvokeHandler { /** * Desc:测试中间件 * User: Administrator * Time: 2021/7/5 9:47 * @param $name * @param array $args * @param stdClass $context * @param Closure $next * @return mixed */ public function handle($name, array &$args, stdClass $context, Closure $next) { if($name == 'demo_test'){ var_dump('test'); } $result = $next($name, $args, $context, $next); return $result; } }中间件的加载顺序决定了执行顺序,注意config/hprose.php中的middleware数组元素的顺序
服务启动、停止、重启
php artisan hprose:server start //启动 php artisan hprose:server restart //重启(平滑重启) php artisan hprose:server stop //停止
调试
php artisan hprose:client demo