基於 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' => [ // ... Zhuqipeng\LaravelHprose\ServiceProvider::class, ]
'aliases' => [ // ... 'LaravelHproseMethodManage' => Zhuqipeng\LaravelHprose\Facades\HproseMethodManage::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="Zhuqipeng\LaravelHprose\ServiceProvider"
應用根目錄下的
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 類方法,格式:App\Controllers\User@update
- array $options 是一個關聯陣列,它裡面包含了一些對該服務函式的特殊設定,詳情請參考hprose-php官方文件介紹 連結
釋出遠端呼叫方法 getUserByName
和 userUpdate
\LaravelHproseRouter::add('getUserByName', function ($name) {
return 'name: ' . $name;
});
\LaravelHproseRouter::add('userUpdate', 'App\Controllers\User@update', ['model' => \Hprose\ResultMode::Normal]);
控制器
<?php
namespace App\Controllers;
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' => 'App\Controllers'], function ($route) {
$route->add('getUserByName', function ($name) {
return 'name: ' . $name;
});
$route->add('userUpdate', 'User@update');
});
客戶端呼叫
$client->getUserByName('zhuqipeng');
$client->userUpdate('zhuqipeng');
字首
\LaravelHproseRouter::group(['namespace' => 'App\Controllers', '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
本作品採用《CC 協議》,轉載必須註明作者和本文連結