The JSON-RPC PHP goal is to make the network walking fully transparent to the programming. The idea is that an object O created in the host S (Server) could be used from the host C (Client) as if it was an internal object, whose behavior was identical to the O object in the S host.
To grant this, naturally, in the S host must be present and running the server jsonRPCServer, that is a class with one static method incapsulating the requested object in a JSON-RPC service and serving it to the consumers coming from the network.
Similary, in the C host must be present the client jsonRPCClient, that is a class incapsulating the object methods through the network, that is creating objects for the C environement acting exactly as the O object packaged in the server side.
Obviously, client and server are used separately and there isn't any prescription in the use of one side only of the protocol with these classes.
The form of the construction remain identical: the S server serves the O object methods as JSON-RPC, regardless of that methods will be consumed by the remote systems. Similarly, the C client gives locally the JSON-RPC services as objects O, who have the same methods (with the same parameters) of the service.
The version considered is the JSON-RPC 1.0. It's the only stable version available.
For simplicity (and according the JSON-RPC 1.1 version working draft), if not expressely required, the client doesn't use notifications.