Handlers & Method Naming

handler.method pattern

Methods follow the handler.method pattern. When you see user.get:

Handler safety rules

Parameter binding

Parameters are type-checked and mapped to -32602 Invalid params for mismatches.

Explicit procedure descriptors

For advanced use cases, you can register procedures explicitly alongside auto-discovery:

use Lumen\JsonRpc\Dispatcher\ProcedureDescriptor;

$registry = $server->getRegistry();
$registry->register('math.add', MathHandler::class, 'add', [
    'description' => 'Add two numbers',
]);

Handler factory (DI)

Inject app services into handlers without forcing a framework container:

use Lumen\JsonRpc\Dispatcher\HandlerFactoryInterface;

$factory = new class($db) implements HandlerFactoryInterface {
    public function __construct(private DatabaseService $db) {}

    public function create(string $className, RequestContext $context): object
    {
        return new $className($this->db);
    }
};
$server->setHandlerFactory($factory);