Hprose for PHP
, (*1)
Introduction
Hprose is a High Performance Remote Object Service Engine., (*2)
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., (*3)
Hprose supports many programming languages, for example:, (*4)
- AAuto Quicker
- ActionScript
- ASP
- C++
- Dart
- Delphi/Free Pascal
- dotNET(C#, Visual Basic...)
- Golang
- Java
- JavaScript
- Node.js
- Objective-C
- Perl
- PHP
- Python
- Ruby
- ...
Through Hprose, You can conveniently and efficiently intercommunicate between those programming languages., (*5)
This project is the implementation of Hprose for PHP., (*6)
Installation
Download Source Code
Download Link, (*7)
install by composer
{
"require": {
"hprose/hprose": "dev-master"
}
}
Usage
Server
Hprose for PHP is very easy to use. You can create a hprose server like this:, (*8)
addFunction('hello');
$server->start();
```
You can also use `HproseSwooleServer` to create a standalone hprose server:
`server.php`
```php
addFunction('hello');
$server->start();
```
then use command line to start it:
`php server.php`
To use `HproseSwooleServer`, you need install [swoole](http://www.swoole.com/) first. The minimum version of [swoole](https://github.com/swoole/swoole-src) been supported is 1.7.16.
`HproseSwooleServer` not only support creating http serverïŒbut also support create tcp, unix and websocket server. For examples:
`tcp_server.php`
```php
addFunction('hello');
$server->start();
```
`unix_server.php`
```php
addFunction('hello');
$server->start();
```
`websocket_server.php`
```php
addFunction('hello');
$server->start();
```
The websocket server is also a http server.
### Client
Then you can create a hprose client to invoke it like this:
```php
hello('World');
```
Hprose also suplied `HproseSwooleClient`ïŒit supports httpïŒtcp and unix. For example:
```php
hello('World');
?>
It also support asynchronous concurrency invoke. For example:, (*9)
<?php
require_once("Hprose.php");
$client = new HproseSwooleClient('tcp://0.0.0.0:1234');
$client->hello('World', 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 callback function of asynchronous concurrency invoking supports 0 - 3 parameters:, (*10)
| 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. |
Exception Handling
If an error occurred on the server, or your service function/method throw an exception. it will be sent to the client, and the client will throw it as an exception. You can use the try statement to catch it., (*11)
No exception throwed on asynchonous invoking. The exception object will be passed to the callback function as the third argument., (*12)