Need help with php-advanced-json-rpc?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

felixfbecker
158 Stars 15 Forks ISC License 55 Commits 16 Opened issues

Description

A more advanced PHP implementation of the JSONRPC Protocol ğŸ“žâ—

Services available

!
?

Need anything else?

Contributors list

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"

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.