create
建立客戶端$client = \Hprose\Client::create($uriList = null[, $async = true]);
create
方法與構造器函數的參數同樣,返回結果也同樣。可是第一個參數 $uriList
不能被省略。php
使用 create
方法更加方便,所以,除非在建立客戶端的時候,不想指定服務地址,不然,應該優先考慮使用 create
方法來建立客戶端。html
\Hprose\Client::create
支持建立 Hprose 核心庫上的客戶端,Hprose\Swoole\Client::create
支持建立 swoole 的客戶端。例如:git
建立一個同步的 HTTP 客戶端github
$client = \Hprose\Client::create('http://hprose.com/example/', false);
use Hprose\Http\Server; function hello($name) { return "Hello $name!"; } $server = new Server(); $server->addFunction('hello'); $server->start();
建立一個同步的 TCP 客戶端數組
$client = \Hprose\Client::create('tcp://127.0.0.1:1314', false);
use Hprose\Socket\Server; function hello($name) { return "Hello $name!"; } $server = new Server("tcp://0.0.0.0:1314"); $server->addFunction('hello'); $server->start();
建立一個異步的 Unix Socket 客戶端promise
$client = \Hprose\Client::create('unix:/tmp/my.sock');
use Hprose\Socket\Server; function hello($name) { return "Hello $name!"; } $server = new Server("unix:/tmp/my.sock"); $server->addFunction('hello'); $server->start();
建立一個異步的 WebSocket 客戶端服務器
$client = \Hprose\Swoole\Client::create('ws://127.0.0.1:8080/');
use Hprose\Swoole\Server; function hello($name) { return "Hello $name!"; } $server = new Server("ws://0.0.0.0:8088"); $server->addFunction('hello'); $server->start();
2.事件
onBeforeInvoke
事件該事件在調用執行前觸發,該事件的處理函數形式爲:swoole
function($name, &$args, $byref, \stdClass $context) { ... }
參數 $name
是服務函數/方法名。 參數 $args
是調用的參數數組,能夠聲明爲引用參數。 參數 $byref
表示是不是引用參數傳遞。 參數 $context
是該調用的上下文參數。網絡
若是在該事件中拋出異常、返回錯誤對象、或者返回一個失敗(rejected
)狀態的 promise
對象。則再也不執行服務函數/方法。異步
onAfterInvoke
事件該事件在調用執行後觸發,該事件的處理函數形式爲:
function($name, &$args, $byref, &$result, \stdClass $context) { ... }
參數 $name
是服務函數/方法名。 參數 $args
是調用的參數數組,能夠聲明爲引用參數。 參數 $byref
表示是不是引用參數傳遞。 參數 $result
是調用執行的結果,能夠聲明爲引用參數。 參數 $context
是該調用的上下文參數。
若是在該事件中拋出異常、返回錯誤對象、或者返回一個失敗(rejected
)狀態的 promise
對象。則再也不返回結果 $result
,而是將錯誤信息返回給客戶端。
onSendError
事件該事件在服務端發生錯誤時觸發,該事件的處理函數形式爲:
function(&$error, \stdClass $context) { ... }
若是在該事件中拋出異常、返回錯誤對象。則該錯誤會替代原來的錯誤信息返回給客戶端。
$error 參數能夠聲明爲引用參數,在事件中能夠對 $error 進行修改。
當服務器與客戶端之間發生網絡中斷性的錯誤時,仍然會觸發該事件,可是不會有錯誤信息發送給客戶端。
onSendHeader
事件該事件在服務器發送 HTTP 頭時觸發,該事件的處理函數形式爲:
function(\stdClass $context) { ... }
若是在該事件中拋出異常,則再也不執行後序操做,直接返回異常信息給客戶端。
onAccept
事件該事件在 Socket 或 WebSocket 服務器接受客戶端鏈接時觸發,該事件的處理函數形式爲:
function(\stdClass $context) { ... }
若是在該事件中拋出異常,則會斷開跟該客戶端的鏈接。
onClose
事件該事件在 Socket 或 WebSocket 服務器跟客戶端之間的鏈接關閉時觸發,該事件的處理函數形式爲:
function(\stdClass $context) { ... }
該事件中拋出異常不會對服務器和客戶端有任何影響。
onError
事件該事件僅被 Hprose\Socket\Server
所支持,其它服務器不支持,該事件在服務器與客戶端發生通信錯誤,沒法將錯誤發送給客戶端時觸發。該事件的處理函數形式爲:
function($error, \stdClass $context) { ... }
該事件中拋出異常不會對服務器和客戶端有任何影響。
官方使用手冊地址:https://github.com/hprose/hprose-php/wiki