PHPackages                             duan617/laravel-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. [Utility &amp; Helpers](/categories/utility)
4. /
5. duan617/laravel-hprose

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

duan617/laravel-hprose
======================

Hprose for Laravel

v1.0.1(3y ago)03MITPHPPHP &gt;=7.0.0

Since Sep 13Pushed 3y agoCompare

[ Source](https://github.com/duanfuxing/laravel-hprose)[ Packagist](https://packagist.org/packages/duan617/laravel-hprose)[ RSS](/packages/duan617-laravel-hprose/feed)WikiDiscussions master Synced 1mo ago

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

Laravel-hprose
==============

[](#laravel-hprose)

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

版本要求
----

[](#版本要求)

```
Laravel>=5.2

```

安装
--

[](#安装)

```
composer require "zhuqipeng/laravel-hprose:v1.0.*"
```

或者编辑composer.json

```
"require": {
    "zhuqipeng/laravel-hprose": "v1.0.*"
}
```

配置
--

[](#配置)

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

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

        duan617\LaravelHprose\ServiceProvider::class,
    ]
    ```

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

        'LaravelHproseMethodManage' => duan617\LaravelHprose\Facades\HproseMethodManage::class,
    ]
    ```
2. 配置.env文件

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

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

    ```

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

    ```
    HPROSE_DEMO=true // true or false

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

    ```
    php artisan vendor:publish --provider="duan617\LaravelHprose\ServiceProvider"
    ```

    > 应用根目录下的`config`目录下会自动生成新文件`hprose.php`
    >
    > 应用根目录下的`routes`目录下会自动生成新文件`rpc.php`
4. 配置说明，`config/hprose.php`

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

    ```
    'uris' => json_decode(env('HPROSE_URIS', '["tcp://0.0.0.0:1314"]')),
    ```

    是否启用demo方法，true开启 false关闭，开启后将自动对外发布一个远程调用方法 `demo`

    ```
    'demo' => env('HPROSE_DEMO'),
    ```

    参数验证器命名空间

    ```
    'parameter' => 'App\\Controllers\\Parameters'
    ```

    控制器命名空间

    ```
    'controller' => 'App\\Controllers',
    ```

使用
--

[](#使用)

### 路由

[](#路由)

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

路由文件

```
routes/rpc.php

```

添加路由方法

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

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

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

控制器

```
