by datto

datto /php-json-rpc

Fully unit-tested JSON-RPC 2.0 for PHP

136 Stars 25 Forks Last release: Not found GNU Lesser General Public License v3.0 35 Commits 14 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:



This package allows you to create and evaluate JSON-RPC messages, using your own PHP code to evaluate the requests.

This package allows you to create and evaluate any JSON-RPC message. It implements the JSON-RPC specifications, but does not provide a transport layer—which you'll also need if you want to send or receive messages over a distance! One of the beautiful features of JSON-RPC is that you can use any transport layer to carry your messages: This package gives you that option.

If you're looking for an end-to-end solution, with the transport layer included, then you should use one of these alternative packages instead: * To send messages over HTTP(S), use the php-json-rpc-http package. * To send messages over SSH, use the php-json-rpc-ssh package.


  • Correct: fully compliant with the JSON-RPC 2.0 specifications (100% unit-test coverage)
  • Flexible: you can use your own code to evaluate the JSON-RPC method strings
  • Minimalistic: extremely lightweight
  • Ready to use, with working examples



$client = new Client();

$client->query(1, 'add', array(1, 2));

$message = $client->encode();

// message: {"jsonrpc":"2.0","method":"add","params":[1,2],"id":1}


$api = new Api();

$server = new Server($api);

$reply = $server->reply($message);

// reply: {"jsonrpc":"2.0","result":3,"id":1}

See the examples folder for full working examples.


  • PHP >= 7.0


This package is released under an open-source license: LGPL-3.0


If you're using Composer, you can include this library (datto/json-rpc) like this:

composer require "datto/json-rpc"

Getting started

  1. Try the examples. You can run the examples from the project directory like this:

    php examples/client.php
    php examples/server.php
  2. Take a look at the code "examples/src"—then replace it with your own!

Unit tests

You can run the suite of unit tests from the project directory like this:



See what has changed: Changelog


Spencer Mortensen

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.