前言:上一篇實(shí)現(xiàn)go客戶端,這里實(shí)現(xiàn)php客戶端。
1.準(zhǔn)備工作,composer安裝thrift包
2.準(zhǔn)備工作,通過(guò).thrift文件生成php協(xié)議代碼
3.實(shí)際開(kāi)發(fā),實(shí)現(xiàn)客戶端代碼
1.準(zhǔn)備工作,composer安裝thrift包
由于需要在php項(xiàng)目中使用thrift的功能,所以需要安裝thrift包,這里通過(guò)composr安裝管理
composer require apache/thrift
2.準(zhǔn)備工作,通過(guò).thrift文件生成php協(xié)議代碼
??.thrift文件必須與服務(wù)端一致(向rpc服務(wù)端開(kāi)發(fā)人員要),通過(guò)thrift工具生成php協(xié)議代碼
# 示例用戶服務(wù)文件
thrift -out . --gen php user.thrift
工具運(yùn)行后生成thrift文件夾如下:

3.實(shí)際開(kāi)發(fā),實(shí)現(xiàn)客戶端代碼
3.1 由于生成的thrift協(xié)議代碼需要加載才能使用。??
所以這里采用配置composer files方式加載文件。
composer.json文件如下 :(??配置完畢重新執(zhí)行composer install)
{
"require": {
"apache/thrift": "^0.11.0"
},
"autoload": {
"files": [
"thrift/user/Types.php",
"thrift/user/User.php"
]
}
}
3.2 編寫(xiě)客戶端代碼
<?php
require_once 'vendor/autoload.php';
use Thrift\Transport\TSocket;
use Thrift\Protocol\TBinaryProtocol;
// 傳輸方式(需與服務(wù)端一致)
$socket = new TSocket("localhost", 9002);
// 傳輸協(xié)議(需與服務(wù)端一致)
$transport = new \Thrift\Transport\TBufferedTransport($socket);
$protocol = new TBinaryProtocol($transport);
// 實(shí)例化業(yè)務(wù)
$client = new \thrift\user\UserClient($protocol);
$transport->open();
// 調(diào)用服務(wù)方法
var_dump($client->GetName());
$transport->close();
3.3 測(cè)試結(jié)果:

總結(jié)
php客戶端實(shí)現(xiàn)也是非常簡(jiǎn)單,??傳輸方式與傳輸協(xié)議