PHPackages                             lumening/lumen-hprose - 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. [API Development](/categories/api)
4. /
5. lumening/lumen-hprose

ActiveLibrary[API Development](/categories/api)

lumening/lumen-hprose
=====================

Hprose for Lumen/Laravel

v0.2.0-BETA(7y ago)8268MITPHPPHP &gt;=7.0.0

Since Nov 27Pushed 7y ago1 watchersCompare

[ Source](https://github.com/lumening/lumen-hprose)[ Packagist](https://packagist.org/packages/lumening/lumen-hprose)[ RSS](/packages/lumening-lumen-hprose/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (2)Versions (4)Used By (0)

Lumen-hprose
============

[](#lumen-hprose)

基于 [hprose/hprose-php](https://github.com/hprose/hprose-php/wiki) 开发的Lumen/Laravel扩展：[Lumen-hprose](https://github.com/lumening/lumen-hprose)参考：[Laravel-hprose](https://github.com/zhuqipeng/laravel-hprose)

开发背景：最近打算使用lumen框架做rpc的功能，于是在网上找是否有相关的拓展，于是找到了Laravel-hprose，本打算直接用于 lumen 但尝试后发现laravel的不能完全与lumen兼容，于是根据Laravel-hprose 修改 得到 [Lumen-hprose](https://github.com/lumening/lumen-hprose)，同时兼容lumen 和 laravel。

版本要求
----

[](#版本要求)

```
Laravel>=5.2

```

安装
--

[](#安装)

直接使用

```
composer require lumening/lumen-hprose
```

如果上面不行，那么 编辑composer.json

```
"repositories": [
        {
            "type": "git",
            "url": "https://github.com/lumening/lumen-hprose.git"
        }
    ]
```

然后执行

```
composer require "lumening/lumen-hprose"
```

使用**laravel**配置
---------------

[](#使用laravel配置)

1. 在 config/app.php 注册 ServiceProvider 和 Facade (Laravel 5.5 无需手动注册)

    ```
    'providers' => [
        // ...

       Lumening\LumenHprose\ServiceProvider::class,
    ]
    ```

    ```
    'aliases' => [
        // ...

         'LumenHproseRouter'=>Lumening\LumenHprose\Facades\Router::class,
    ]
    ```
2. 配置.env文件 监听地址列表，字符串json格式数组

    ```
    HPROSE_URIS=["tcp://0.0.0.0:8888"]

    ```

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

    ```
    HPROSE_DEMO=true // true or false

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

    ```
    php artisan vendor:publish --provider="Lumening\LumenHprose\ServiceProvider"
    ```

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

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

[](#使用lumen配置)

1. 在 bootstrap/app.php 注册 ServiceProvider 和 Facade

    ```
       $app->register(Lumening\LumenHprose\ServiceProvider::class);
    ```

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

    ```
        protected $commands = [
        //...
        \Laravelista\LumenVendorPublish\VendorPublishCommand::class,
        ];
    ```
3. 配置.env文件 监听地址列表，字符串json格式数组

    ```
    HPROSE_URIS=["tcp://0.0.0.0:8888"]

    ```

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

    ```
    HPROSE_DEMO=true // true or false

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

    ```
    php artisan vendor:publish --provider="Lumening\LumenHprose\ServiceProvider"
    ```

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

使用
--

[](#使用)

### 路由

[](#路由)

> 和 `laravel` 路由的用法相似，基于 [dingo/api](https://github.com/dingo/api) 的路由代码上做了简单修改

路由文件

```
routes/rpc.php

```

添加路由方法

```
\LumenHproseRouter::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`

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

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

控制器

```
