felixfbecker/php-advanced-json-rpc


A more advanced PHP implementation of the JSONRPC Protocol 📞❗

License: ISC

Language: PHP


Advanced JSONRPC

Version Build Status Coverage semantic-release License

Provides basic classes for requests and responses in JSONRPC and a Dispatcher class that can decode a JSONRPC request and call appropriate methods on a target, coercing types of parameters by type-hints and @param tags.

Supports nested targets: If the method is something like myNestedTarget->theMethod, the dispatcher will look for a myNestedTarget property on the target and call theMethod on it. The delimiter is configurable and defaults to the PHP object operator ->.

Example

use AdvancedJsonRpc\Dispatcher;

class Argument 
{
    public $aProperty;
}

class Target
{
    public function someMethod(Argument $arg)
    {
        // $arg instanceof Argument === true
        // $arg->aProperty === 123
        return 'Hello World';
    }
}

$dispatcher = new Dispatcher(new Target());

$result = $dispatcher->dispatch('
    {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "someMethod", 
        "params": {
            "arg": {"aProperty": 123}
        }
    }
');

// $result === "Hello World"

Nested Targets

use AdvancedJsonRpc\Dispatcher;

class TextDocumentManager 
{
    public function didOpen(string $uri)
    {
        return 'Thank you for this information';
    }
}

class LanguageServer
{
    public $textDocument;

    public function __construct()
    {
        $this->textDocument = new TextDocumentManager();
    }
}

$dispatcher = new Dispatcher(new LanguageServer(), '/');

$result = $dispatcher->dispatch('
    {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "textDocument/didOpen", 
        "params": {
            "uri": "file:///c/Users/felix/test.php"
        }
    }
');

// $result === "Thank you for this information"

Project Statistics

Sourcerank 7
Repository Size 73.2 KB
Stars 8
Forks 3
Watchers 1
Open issues 6
Dependencies 98
Contributors 6
Tags 21
Created
Last updated
Last pushed

Top Contributors See all

Felix Becker Tyson Andre Vincent Klaiber JJK96

Packages Referencing this Repo

felixfbecker/advanced-json-rpc
A more advanced JSONRPC implementation
Latest release v3.0.3 - Updated - 8 stars

Recent Tags See all

v3.0.3 September 10, 2018
v3.0.2 September 09, 2018
v3.0.1 October 28, 2017
v3.0.0 October 23, 2017
v2.0.3 June 22, 2017
v2.0.2 June 22, 2017
v2.0.1 October 20, 2016
v2.0.0 October 20, 2016
v1.2.10 September 04, 2016
v1.2.9 September 02, 2016
v1.2.8 September 01, 2016
v1.2.7 September 01, 2016
v1.2.6 August 25, 2016
v1.2.5 August 25, 2016
v1.2.4 August 25, 2016

Something wrong with this page? Make a suggestion

Last synced: 2018-09-14 21:51:05 UTC

Login to resync this repository