Hprose is a High Performance Remote Object Service Engine.
It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.
Hprose supports many programming languages, for example:
Through Hprose, You can conveniently and efficiently intercommunicate between those programming languages.
This project is the implementation of Hprose for PHP based on swoole.
More Documents for Hprose 2.0: https://github.com/hprose/hprose-php/wiki
composer
{
"require": {
"hprose/hprose-swoole": "dev-master"
}
}
You need to install swoole first. The minimum version of swoole been supported is 1.8.8.
You also need to install hprose-pecl 1.6.5+.
Hprose for PHP is very easy to use.
You can create a standalone hprose http server like this:
http_server.php
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return 'Hello ' . $name;
}
$server = new Server('http://0.0.0.0:80/');
$server->addFunction('hello');
$server->start();
tcp_server.php
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return 'Hello ' . $name;
}
$server = new Server('tcp://0.0.0.0:2016');
$server->addFunction('hello');
$server->start();
unix_server.php
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return 'Hello ' . $name;
}
$server = new Server('unix:/tmp/my.sock');
$server->addFunction('hello');
$server->start();
websocket_server.php
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return 'Hello ' . $name;
}
$server = new Server('ws://0.0.0.0:8000/');
$server->addFunction('hello');
$server->start();
The websocket server is also a http server.
Then you can create a hprose client to invoke it like this:
http_client.php
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Client;
$client = new Client('http://127.0.0.1/');
$client->hello('World')->then(function($result) {
echo $result;
}, function($e) {
echo $e;
});
$client->hello('World 0', function() {
echo "ok\r\n";
});
$client->hello('World 1', function($result) {
echo $result . "\r\n";
});
$client->hello('World 2', function($result, $args) {
echo $result . "\r\n";
});
$client->hello('World 3', function($result, $args, $error) {
echo $result . "\r\n";
});
tcp_client.php
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Client;
$client = new Client('tcp://127.0.0.1:2016');
$client->hello('World')->then(function($result) {
echo $result;
}, function($e) {
echo $e;
});
$client->hello('World 0', function() {
echo "ok\r\n";
});
$client->hello('World 1', function($result) {
echo $result . "\r\n";
});
$client->hello('World 2', function($result, $args) {
echo $result . "\r\n";
});
$client->hello('World 3', function($result, $args, $error) {
echo $result . "\r\n";
});
The result of invoking is a promise object, you can also specify the callback function after the arguments, the callback function supports 0 - 3 parameters:
params | comments |
---|---|
result | The result is the server returned, if no result, its value is null. |
arguments | It is an array of arguments. if no argument, it is an empty array. |
error | It is an object of Exception, if no error, its value is null. |