Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kuaikuaikim/dubbo-php-client
Dubbo的php客户端(the php client for dubbo)
https://github.com/kuaikuaikim/dubbo-php-client
dubbo dubbo-laravel dubbo-php
Last synced: 2 days ago
JSON representation
Dubbo的php客户端(the php client for dubbo)
- Host: GitHub
- URL: https://github.com/kuaikuaikim/dubbo-php-client
- Owner: kuaikuaikim
- License: apache-2.0
- Created: 2016-01-19T06:16:37.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2019-01-23T15:35:52.000Z (almost 6 years ago)
- Last Synced: 2024-12-13T09:40:49.629Z (9 days ago)
- Topics: dubbo, dubbo-laravel, dubbo-php
- Language: PHP
- Homepage:
- Size: 84 KB
- Stars: 147
- Watchers: 20
- Forks: 51
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dubbo-php-client
the dubbo php client(中文说明往下拉)[Dubbo](https://github.com/alibaba/dubbo) is a distributed service framework empowers applications with service import/export capability with high performance RPC.
This is only dubbo php clinet implementation. It's only support jsonRPC now.
you can see the example for the [dubbo-jsonRPC-demo](https://github.com/quickj/dubbo_jsonrpc_demo) which i write before.
##### Notice:
you must start dubbo and zookeeper,register prividers first.
### Installation
If you have not installed [zookeeper extension](http://pecl.php.net/package/zookeeper) for php,then
```bash
sudo apt-get install php-pear php5-dev make
sudo pecl install zookeeper
```
Maybe occuring an error with "zookeeper support requires libzookeeper" when you install the zookeeper extension,you should install the libzookeeper needed.
```bash
cd ${your zookeeper home dir}/src/c/
./configure
make
sudo make install
```
Add zookeeper.so to your php.ini(/etc/php5/apache2/php.ini and /etc/php5/cli/php.ini)
```bash
extension="/usr/lib/php5/20121212/zookeeper.so"
```##### Require dubbo-php-client package to your project(composer)
```bash
composer require -vvv "quickj/dubbo-php-client:dev-master"
```### Usage
```phpuse DubboPhp\Client\Client;
$options = [
'registry_address' => '127.0.0.1:2181',
'version' => '1.0.0',
'group' =>null,
'protocol' => 'jsonrpc'
];try {
$dubboCli = new Client($options);
$testService = $dubboCli->getService("com.dubbo.demo.HelloService");
$ret = $testService->hello("dubbo php client");
var_dump($ret);
$mapRet = $testService->mapEcho();
var_dump($mapRet);$objectRet = $testService->objectEcho();
var_dump($objectRet);/**
* getService method support 2 way. If the forceVgp = true, It will assign the function parameter to service version,group and protocol. Default way is assign the $options configs to these.
* getService支持两种方式调用。如果forceVgp=true, 该方法将使用传参来绑定服务的版本号,组和协议。默认方式是使用$options数组里的配置绑定。
*/
$testServiceWithvgp = $dubboCli->getService("com.dubbo.demo.HelloService","1.0.0",null, $forceVgp = true);
$vgpRet = $testServiceWithvgp->hello("this request from vgp");
var_dump($vgpRet);
} catch (\DubboPhp\Client\DubboPhpException $e) {
print($e->getMessage());
}```
# dubbo-php-client 中文说明
[DUBBO](https://github.com/alibaba/dubbo)是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架
这是dubbo的唯一php客户端,目前只支持jsonRPC协议,将来会支持多种协议。你可以查看我之前写的[dubbo-jsonRPC-demo](https://github.com/quickj/dubbo_jsonrpc_demo)例子。
##### 注意:
使用之前你必须安装和启动dubbo,zookeeper,注册服务者。### 安装
如果你还没安装php的[zookeeper扩展](http://pecl.php.net/package/zookeeper),需要
```bash
sudo apt-get install php-pear php5-dev make
sudo pecl install zookeeper
```有可能安装过程中会报错"zookeeper support requires libzookeeper",说明缺少libzookeeper库,你首先需要安装该库。
```bash
cd ${your zookeeper home dir}/src/c/
./configure
make
sudo make install
```
添加 zookeeper.so 到你的php.ini(/etc/php5/apache2/php.ini和/etc/php5/cli/php.ini)
添加以下这行
```bash
extension="/usr/lib/php5/20121212/zookeeper.so"
```# 按Composer规范使用dubbo-php-client
```bash
composer require -vvv "quickj/dubbo-php-client:dev-master"```
### 调用样例-直接类调用:
```php
use DubboPhp\Client\Client;
$options = [
'registry_address' => '127.0.0.1:2181',
'version' => '1.0.0',
'group' =>null,
'protocol' => 'jsonrpc'
];try {
$dubboCli = new Client($options);
$testService = $dubboCli->getService("com.dubbo.demo.HelloService");
$ret = $testService->hello("dubbo php client");
var_dump($ret);
$mapRet = $testService->mapEcho();
var_dump($mapRet);$objectRet = $testService->objectEcho();
var_dump($objectRet);/**
* getService method support 2 way. If the forceVgp = true, It will assign the function parameter to service version,group and protocol. Default way is assign the $options configs to these.
* getService支持两种方式调用。如果forceVgp=true, 该方法将使用传参来绑定服务的版本号,组和协议。默认方式是使用$options数组里的配置绑定。
*/
$testServiceWithvgp = $dubboCli->getService("com.dubbo.demo.HelloService","1.0.0",null, $forceVgp = true);
$vgpRet = $testServiceWithvgp->hello("this request from vgp");
var_dump($vgpRet);
} catch (\DubboPhp\Client\DubboPhpException $e) {
print($e->getMessage());
}```
### Laravel组件模式安装
config/app.php的
providers数组中增加:
```php
DubboPhp\Client\DubboPhpClientServiceProvider::class
```aliases别名数组中增加:
```php
'DubboPhpClient'=>DubboPhp\Client\Facades\DubboPhpClient::class,
'DubboPhpClientFactory'=>DubboPhp\Client\Facades\DubboPhpClientFactory::class,
```
然后命令行发布一下系统基本配置文件dubbo_cli.php到config路径:
```php
php artisan vendor:publish --provider="DubboPhp\Client\DubboPhpClientServiceProvider"```
基本安装配置完成,相关的配置在config('dubbo_cli.default')中设置,具体参考配置文件
### Laravel中的使用:
#### 单实例方式(配置读取config('dubbo_cli.default')):
```php
$testService = DubboPhpClient::getService('com.dubbo.demo.HelloService');$ret = $testService->hello("dubbo php client");
var_dump($ret);
```#### 多实例的方式(配置读取config('dubbo_cli.connections.xxx')):
```php
$clientA = DubboPhpClientFactory::factory(config('dubbo_cli.connections.xxxA'));
$testServiceA = $clientA->getService('com.dubbo.demo.HelloService');
$retA = $testServiceA->hello("dubbo php client");
var_dump($retA);$clientB = DubboPhpClientFactory::factory(config('dubbo_cli.connections.xxxB'));
$testServiceB = $clientB->getService('com.dubbo.demo.HelloService');
$retB = $testServiceB->hello("dubbo php client");
var_dump($retB);```