As of the increasing bandwidth of the networks, distributing an organic software device on several hosts and systems is an opportunity always more interesting.
Therefore, since an organic system can be distributed, the functionalities offered by that system can be consumed with the same ease by other systems. This produces many collective benefits about several facts.
In these terms, we can think to Internet as an ecosystem, where each system is an organism.
This phenomenon is well known by the widest part of human surfers of the web as web 2.0, where in this case that means the opportunity to enjoy systems with high information exchange and sharing.
As industrial planning and design, this phenomenon takes the name of interoperability.
Many approach exist and are well known to realize interoperability, but the most common and general is surely the RPC technique.
Remote procedure call (RPC) is a technology that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction. [Wikipedia]
Traditionally, the most common tools to implement RPC techniques are or have been ONC RPC, Corba, MSRPC, Java RMI, XML-RPC, SOAP.
However, none of these seems to be enough general to be used easly in different environements. The packaging appear hard to read for humans because the complex encapsulations and the strong typing makes the protocols hard for the weak typing programming languages, like PHP.
In the latest years, a new technology evolved and became stable, very interesting for the incapsulation of complex data in a light logic and a simple format: JSON.
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. [json.org]
Besides being easy to read for both humans and machines, JSON doesn't need to specify the type of the variables involved. This fact makes JSON the structured format more portable on the interoperability scene.
Next to the JSON succes, an RPC technique has born, following the XML-RPC idea and taking the name of JSON-RPC.
JSON-RPC is lightweight remote procedure call protocol similar to XML-RPC. It's designed to be simple! [json-rpc.org]
The JSON-RPC logic drow on the parent format, JSON, and inherit from it the attention given to portability, universality and simplicity.
For these goodnesses and for the very simple but full support on JSON from PHP (natively supported from the 5.2.0 version, but far-back available as extension), the JSON-RPC technique accomplish very well to join the interoperability needs with the PHP code writing.
JSON-RPC PHP classes definitively join the use of JSON-RPC with the PHP code writing, making the interoperability easy and transparent to folks writing in this language.