前言:上一篇实现go客户端,这里实现php客户端。
1.准备工作,composer安装thrift包
2.准备工作,通过.thrift文件生成php协议代码
3.实际开发,实现客户端代码
1.准备工作,composer安装thrift包
由于需要在php项目中使用thrift的功能,所以需要安装thrift包,这里通过composr安装管理
composer require apache/thrift
2.准备工作,通过.thrift文件生成php协议代码
⚠️.thrift文件必须与服务端一致(向rpc服务端开发人员要),通过thrift工具生成php协议代码
# 示例用户服务文件
thrift -out . --gen php user.thrift
工具运行后生成thrift文件夹如下:
3.实际开发,实现客户端代码
3.1 由于生成的thrift协议代码需要加载才能使用。⚠️
所以这里采用配置composer files方式加载文件。
composer.json文件如下 :(⚠️配置完毕重新执行composer install)
{
"require": {
"apache/thrift": "^0.11.0"
},
"autoload": {
"files": [
"thrift/user/Types.php",
"thrift/user/User.php"
]
}
}
3.2 编写客户端代码
<?php
require_once 'vendor/autoload.php';
use Thrift\Transport\TSocket;
use Thrift\Protocol\TBinaryProtocol;
// 传输方式(需与服务端一致)
$socket = new TSocket("localhost", 9002);
// 传输协议(需与服务端一致)
$transport = new \Thrift\Transport\TBufferedTransport($socket);
$protocol = new TBinaryProtocol($transport);
// 实例化业务
$client = new \thrift\user\UserClient($protocol);
$transport->open();
// 调用服务方法
var_dump($client->GetName());
$transport->close();
3.3 测试结果:
总结
php客户端实现也是非常简单,⚠️传输方式与传输协议