基于 hprose/hprose-php開發的Laravel擴展:laravel-hprosed的介紹

本篇文章給大家帶來的內容是關于基于 hprose/hprose-php開發的laravel擴展:laravel-hprosed的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

基于 hprose/hprose-php 開發的Laravel擴展:laravel-hprose

版本要求

Laravel>=5.3

安裝

composer?require?"zhuqipeng/laravel-hprose:v1.0-alpha"

或者編輯composer.json

"require":?{ ????"zhuqipeng/laravel-hprose":?"v1.0-alpha" }

配置

  1. 在 config/app.php 注冊 ServiceProvider 和 Facade (Laravel 5.5 無需手動注冊)

'providers'?=>?[ ????//?...  ????ZhuqipengLaravelHproseServiceProvider::class, ]
'aliases'?=>?[ ????//?...  ????'LaravelHproseMethodManage'?=>?ZhuqipengLaravelHproseFacadesHproseMethodManage::class, ]
  1. 配置.env文件

    立即學習PHP免費學習筆記(深入)”;

監聽地址列表,字符串json格式數組

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

是否啟用demo方法,true開啟 false關閉,開啟后將自動對外發布一個遠程調用方法 demo

客戶端可調用:$client->demo()

HPROSE_DEMO=true?//?true?or?false
  1. 創建配置和路由文件:

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 &#39;update name: &#39; . $name;     } }

客戶端調用

$client-&gt;getUserByName('zhuqipeng'); $client-&gt;userUpdate('zhuqipeng');

路由組

LaravelHproseRouter::group(array?$attributes,?callable?$callback);
  • array $attributes 屬性 [‘namespace’ => ”, ‘prefix’ => ”]

  • callable $callback 回調函數

LaravelHproseRouter::group(['namespace'?=&gt;?'AppControllers'],?function?($route)?{ ????$route-&gt;add('getUserByName',?function?($name)?{ ????????return?'name:?'?.?$name; ????});  ????$route-&gt;add('userUpdate',?'User@update'); });

客戶端調用

$client-&gt;getUserByName('zhuqipeng'); $client-&gt;userUpdate('zhuqipeng');

前綴

LaravelHproseRouter::group(['namespace'?=&gt;?'AppControllers',?'prefix'?=&gt;?'user'],?function?($route)?{ ????$route-&gt;add('getByName',?function?($name)?{ ????????return?'name:?'?.?$name; ????});  ????$route-&gt;add('update',?'User@update'); });

客戶端調用

$client-&gt;user-&gt;getByName('zhuqipeng'); $client-&gt;user-&gt;update('zhuqipeng'); //?或者 $client-&gt;user_getByName('zhuqipeng'); $client-&gt;user_update('zhuqipeng');

啟動服務

php artisan hprose:socket_server

相關推薦:

Laravel框架路由配置總結、設置技巧大全,laravel框架

Laravel框架路由配置總結、設置技巧大全,laravel框架

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享