PHP JSON-RPC is a simple JSON-RPC client and server. It is currently in an alpha state, a stable version is expected soon. Word of warning, API will probably change soon as well :)
Simply add a dependency on trifs/phpjsonrpc
to your project's composer.json
file if you use Composer to manage the dependencies of your project. Here is a minimal example of a composer.json
:
{
"require": {
"trifs/jsonrpc": "dev-master"
}
}
For a system-wide installation via Composer, you can run:
composer global require 'trifs/phpjsonrpc=*'
$client = new trifs\jsonrpc\Client('http://example.com');
$client->request('method-one')
->send();
$client = new trifs\jsonrpc\Client('http://example.com');
$client->notification('method-one')
->send();
$client = new trifs\jsonrpc\Client('http://example.com');
$client->request('method-one')
->request('method-two')
->notification('method-three')
->send();
Client can be configured with additional options:
timeout
in seconds, connection timeout forfile_get_contents
calls.
$client = new trifs\jsonrpc\Client(
'http://example.com',
['timeout' => 5, ]
);
There is also the option of swapping file_get_contents
call with an implementation that uses curl
:
$client->setTransporter(new trifs\jsonrpc\Client\Transporter\CurlTransporter());
The option might be useful if php.ini configuration allow_url_fopen
is set to Off
, which disables file_get_contents
for remote URLs.
$input = file_get_contents('php://input');
$invoker = function($method, array $params = []) {
return time();
};
$server = new trifs\jsonrpc\Server($input, $invoker);
$server->run();
Contributions are always welcome. You make our lives easier by sending us your contributions through GitHub pull requests.
Due to time constraints, we are not always able to respond as quickly as we would like. Please do not take delays personal and feel free to remind us here if you feel that we forgot to respond.
To set PHP JSON-RPC up locally, make sure to have Vagrant and VirtualBox installed.
git clone git://github.com/3fs/php-json-rpc
cd php-json-rpc
vagrant up
After making the changes, run ./build/qa.sh all
, sit back and relax. If there are problems reported, repeat. If not, try harder :)