Laravel-hprose
基於 hprose/hprose-php 開發的Laravel擴充套件:laravel-hprose
版本要求
Laravel>=5.2
安裝
composer require "zhuqipeng/laravel-hprose:v1.0-alpha"
或者編輯composer.json
"require": {
"zhuqipeng/laravel-hprose": "v1.0-alpha"
}
配置
-
在 config/app.php 註冊 ServiceProvider 和 Facade (Laravel 5.5 無需手動註冊)
`providers` => [ // ... ZhuqipengLaravelHproseServiceProvider::class, ]
`aliases` => [ // ... `LaravelHproseMethodManage` => ZhuqipengLaravelHproseFacadesHproseMethodManage::class, ]
-
配置.env檔案
監聽地址列表,字串json格式陣列
HPROSE_URIS=["tcp://0.0.0.0:1314"]
是否啟用demo方法,true開啟 false關閉,開啟後將自動對外釋出一個遠端呼叫方法
demo
客戶端可呼叫:$client->demo()
HPROSE_DEMO=true // true or false
-
建立
配置
和路由
檔案:php artisan vendor:publish --provider="ZhuqipengLaravelHproseServiceProvider"
應用根目錄下的
config
目錄下會自動生成新檔案hprose.php
應用根目錄下的
routes
目錄下會自動生成新檔案rpc.php
使用
路由
和
laravel
路由的用法相似,基於 dingo/api 的路由程式碼上做了簡單修改
路由檔案
routes/rpc.php
新增路由方法
LaravelHproseRouter::add(string $name, string|callable $action, array $options = []);
- string $name 可供客戶端遠端呼叫的方法名
- string|callable $action 類方法,格式:AppControllersUser@update
- array $options 是一個關聯陣列,它裡面包含了一些對該服務函式的特殊設定,詳情請參考hprose-php官方文件介紹 連結
釋出遠端呼叫方法 getUserByName
和 update
LaravelHproseRouter::add(`getUserByName`, function ($name) {
return `name: ` . $name;
});
LaravelHproseRouter::add(`userUpdate`, `AppControllersUser@update`, [`model` => HproseResultMode::Normal]);
控制器
<?php
namespace AppControllers;
class User
{
public function update($name)
{
return `update name: ` . $name;
}
}
客戶端呼叫
$client->getUserByName(`zhuqipeng`);
$client->userUpdate(`zhuqipeng`);
路由組
LaravelHproseRouter::group(array $attributes, callable $callback);
- array $attributes 屬性 [`namespace` => “, `prefix` => “]
- callable $callback 回撥函式
LaravelHproseRouter::group([`namespace` => `AppControllers`], function ($route) {
$route->add(`getUserByName`, function ($name) {
return `name: ` . $name;
});
$route->add(`userUpdate`, `User@update`);
});
客戶端呼叫
$client->getUserByName(`zhuqipeng`);
$client->userUpdate(`zhuqipeng`);
字首
LaravelHproseRouter::group([`namespace` => `AppControllers`, `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(`zhuqipeng`);
啟動服務
php artisan hprose:socket_server