1. Go to this page and download the library: Download yoanm/jsonrpc-server-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yoanm / jsonrpc-server-sdk example snippets
use Yoanm\JsonRpcServer\Domain\JsonRpcMethodInterface;
class DummyMethod implements JsonRpcMethodInterface
{
/**
* {@inheritdoc}
*/
public function apply(array $paramList = null)
{
// Handle the request
...
// Then return a result
return [
'status' => 'done',
];
// Or
return null;
// Or
return 12345;
}
}
use Yoanm\JsonRpcServer\Domain\JsonRpcMethodInterface;
use Yoanm\JsonRpcServer\Domain\JsonRpcMethodResolverInterface;
class ArrayMethodResolver implements JsonRpcMethodResolverInterface
{
/** @var JsonRpcMethodInterface[] */
private $methodList = [];
/**
* {@inheritdoc}
*/
public function resolve(string $methodName) : ?JsonRpcMethodInterface
{
return array_key_exists($methodName, $this->methodList)
? $this->methodList[$methodName]
: null
;
}
/**
* @param JsonRpcMethodInterface $method
* @param string $methodName
*/
public function addMethod(JsonRpcMethodInterface $method, string $methodName)
{
$this->methodList[$methodName] = $method;
}
}
use Yoanm\JsonRpcServer\App\Creator\ResponseCreator;
use Yoanm\JsonRpcServer\App\Handler\ExceptionHandler;
use Yoanm\JsonRpcServer\App\Handler\JsonRpcRequestHandler;
use Yoanm\JsonRpcServer\App\Serialization\JsonRpcCallDenormalizer;
use Yoanm\JsonRpcServer\App\Serialization\JsonRpcCallResponseNormalizer;
use Yoanm\JsonRpcServer\App\Serialization\JsonRpcCallSerializer;
use Yoanm\JsonRpcServer\App\Serialization\JsonRpcRequestDenormalizer;
use Yoanm\JsonRpcServer\App\Serialization\JsonRpcResponseErrorNormalizer;
use Yoanm\JsonRpcServer\App\Serialization\JsonRpcResponseNormalizer;
use Yoanm\JsonRpcServer\Infra\Endpoint\JsonRpcEndpoint;
$resolver = new ArrayMethodResolver();
$resolver->addMethod('dummy-method', new DummyMethod());
$jsonRpcSerializer = new JsonRpcCallSerializer(
new JsonRpcCallDenormalizer(
new JsonRpcRequestDenormalizer()
),
new JsonRpcCallResponseNormalizer(
new JsonRpcResponseNormalizer()
// Or `new JsonRpcResponseNormalizer(new JsonRpcResponseErrorNormalizer())` for debug purpose
// To also dump arguments, be sure 'zend.exception_ignore_args' ini option is not at true/1
)
);
$responseCreator = new ResponseCreator();
$requestHandler = new JsonRpcRequestHandler($resolver, $responseCreator);
$exceptionHandler = new ExceptionHandler($responseCreator);
$endpoint = new JsonRpcEndpoint($jsonRpcSerializer, $requestHandler, $exceptionHandler);
use Yoanm\JsonRpcServer\Domain\Event\JsonRpcServerEvent;
use Yoanm\JsonRpcServer\Domain\JsonRpcServerDispatcherInterface;
/**
* Class SimpleDispatcher
*/
class SimpleDispatcher implements JsonRpcServerDispatcherInterface
{
/** @var callable[] */
private $listenerList = [];
/**
* {@inheritdoc}
*/
public function dispatchJsonRpcEvent(string $eventName, JsonRpcServerEvent $event = null) : void
{
if (!array_key_exists($eventName, $this->listenerList)) {
return;
}
foreach ($this->listenerList[$eventName] as $listener) {
$listener($event, $eventName);
}
}
/**
* {@inheritdoc}
*/
public function addJsonRpcListener(string $eventName, $listener) : void
{
$this->listenerList[$eventName][] = $listener;
}
}
use Yoanm\JsonRpcServer\Domain\Event\Acknowledge\OnRequestReceivedEvent;
use Yoanm\JsonRpcServer\Domain\Event\Acknowledge\OnResponseSendingEvent;
use Yoanm\JsonRpcServer\Domain\Event\Action\OnMethodSuccessEvent;
$dispatcher = new SimpleDispatcher();
$listener = function ($event, $eventName) {
echo sprintf(
'Received %s with event class "%s"',
$eventName,
get_class($event)
);
};
$dispatcher->addJsonRpcListener(OnRequestReceivedEvent::EVENT_NAME, $listener);
$dispatcher->addJsonRpcListener(OnResponseSendingEvent::EVENT_NAME, $listener);
$dispatcher->addJsonRpcListener(OnMethodSuccessEvent::EVENT_NAME, $listener);
use Yoanm\JsonRpcServer\Domain\JsonRpcMethodInterface;
use Yoanm\JsonRpcServer\Domain\JsonRpcMethodParamsValidatorInterface;
use Yoanm\JsonRpcServer\Domain\Model\JsonRpcRequest;
$validator = new class implements JsonRpcMethodParamsValidatorInterface
{
public function validate(JsonRpcRequest $jsonRpcRequest, JsonRpcMethodInterface $method) : array
{
if (!(/** Skip unexpected method */)) {
return [];
}
// Create your violations based on what you want
$paramList = $jsonRpcRequest->getParamList();
$violation = "???";
return [$violation];
}
};
$requestHandler->setMethodParamsValidator($validator);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.