PHPackages                             trangfoo/hprose-lumen - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. trangfoo/hprose-lumen

ActiveLibrary

trangfoo/hprose-lumen
=====================

Hprose for Lumen

0111PHP

Since Jul 4Pushed 4y ago1 watchersCompare

[ Source](https://github.com/trangfoo/hprose-lumen)[ Packagist](https://packagist.org/packages/trangfoo/hprose-lumen)[ RSS](/packages/trangfoo-hprose-lumen/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

hprose-lumen
============

[](#hprose-lumen)

基于 [hprose/hprose-php](https://github.com/hprose/hprose-php/wiki) 开发的Lumen扩展：[hprose-lumen](https://github.com/trangfoo/hprose-lumen)

开发背景：最近需要在lumen框架中实现rpc的功能，于是在网上找了相关的资料，进行了一些拓展

参考了：[Laravel-hprose](https://github.com/zhuqipeng/laravel-hprose) | [Lumen-hprose](https://github.com/lumening/lumen-hprose)

版本要求
----

[](#版本要求)

```
Lumen>=5.2
【注】本项目是在Lumen8下进行的测试

```

安装
--

[](#安装)

直接使用

```
composer require trangfoo/hprose-lumen
```

使用**lumen**配置
-------------

[](#使用lumen配置)

1. 在 bootstrap/app.php 中引入hprose配置、注册 ServiceProvider 和 Facade

    ```
         $app->configure('hprose');
    ```

    ```
       $app->register(Trangfoo\HproseLumen\ServiceProvider::class);
    ```

    ```
        $app->withFacades(true, [
            // ...
            'Trangfoo\HproseLumen\Facades\Router' => 'HproseLumenRouter',
        ]);
    ```
2. 在 app/Console/Kernel.php 添加 vendor publish

    ```
        protected $commands = [
        //...
        \Laravelista\LumenVendorPublish\VendorPublishCommand::class,
        ];
    ```
3. 配置.env文件

    完整配置

    ```
    #[RPC]
    #RPC服务（监听端口、主机）
    HPROSE_PORT=8888
    HPROSE_URIS=["tcp://0.0.0.0:${HPROSE_PORT}"]

    #开启范例路由
    HPROSE_DEMO=true

    #请求不通过返回码及信息
    HPROSE_REJECT_CODE=0
    HPROSE_REJECT_MSG=Server拒绝本次请求

    #RPC连接密钥
    HPROSE_SECRET=123456789

    #RPC超时限制（秒）
    HPROSE_TIMEOUT=60

    ```

    监听地址列表，字符串json格式数组

    ```
    #RPC服务（监听端口、主机）
    HPROSE_PORT=8888
    HPROSE_URIS=["tcp://0.0.0.0:${HPROSE_PORT}"]

    ```

    是否启用demo方法，true开启 false关闭，开启后将自动对外发布一个远程调用方法 `demo`客户端可调用：$client-&gt;demo()

    ```
    #开启范例路由
    HPROSE_DEMO=true

    ```

    客户端与服务端通信时，如果发生鉴权失败、超时等返回失败信息； RPC通信的鉴权密钥、超时时间限制

    ```
    #请求不通过返回码及信息
    HPROSE_REJECT_CODE=0
    HPROSE_REJECT_MSG=Server拒绝本次请求

    #RPC连接密钥
    HPROSE_SECRET=123456789

    #RPC超时限制（秒）
    HPROSE_TIMEOUT=60

    ```
4. 创建`配置`和`路由`文件：

    ```
    php artisan vendor:publish --provider="Trangfoo\HproseLumen\ServiceProvider"
    ```

    > 应用根目录下的`config`目录下会自动生成新文件`hprose.php`
    >
    > 应用根目录下的`routes`目录下会自动生成新文件`rpc.php`

使用
--

[](#使用)

### 路由

[](#路由)

路由文件

```
routes/rpc.php

```

添加路由方法

```
\HproseLumenRouter::add(string $name, string|callable $action, array $options = []);
```

- string $name 可供客户端远程调用的方法名
- string|callable $action 类方法，格式：App\\Controllers\\User@update
- array $options 是一个关联数组，它里面包含了一些对该服务函数的特殊设置，详情请参考hprose-php官方文档介绍 [链接](https://github.com/hprose/hprose-php/wiki/06-Hprose-%E6%9C%8D%E5%8A%A1%E5%99%A8#addfunction-%E6%96%B9%E6%B3%95)

发布远程调用方法 `getUserByName` 和 `update`

```
\HproseLumenRouter::add('getUserByName', function ($name) {
    return 'name: ' . $name;
});

\HproseLumenRouter::add('userUpdate', 'App\Controllers\User@update', ['model' => \Hprose\ResultMode::Normal]);
```

控制器

```
