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
188 Stars 15 Forks ISC License 57 Commits 11 Opened issues

Description

A more advanced PHP implementation of the JSONRPC Protocol đź“žâť—

Services available

!
?

Need anything else?

Contributors list

# 8,479
TypeScr...
xdebug
Electro...
SQLite
41 commits
# 14,994
PHP
Symfony
securit...
curl
3 commits
# 7,838
Laravel
PHP
Compose...
hashids
1 commit
# 12,689
PHP
Compose...
taint-a...
securit...
1 commit
# 157,597
kakoune
Vim
c-plus-...
modal-e...
1 commit
# 228,015
PHP
Symfony
symfony...
jira
1 commit
# 13,465
PHP
Symfony
sonata
php7
1 commit
# 28,602
Symfony
api-pla...
seleniu...
filesys...
1 commit
# 139,773
PHP
Laravel
autocom...
Shell
1 commit
# 10,439
WordPre...
Laravel
php7
woocomm...
1 commit
# 83,081
PureScr...
type-in...
securit...
stripe
1 commit

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.