||Service Component Architecture (SCA) and Service Data Objects (SDO) for PHP
Caroline Maynard <
cem at php dot net >
Graham Charters <
gcc at php dot net >
Matthew Peters <
mfp at php dot net >
Simon Laws (lead)
||Service Data Objects (SDOs) enable PHP applications to work with data from different sources (typically a database query or an XML file) using a single interface. SCA for PHP allows a PHP programmer to write reusable components (classes) in PHP, which can be called either locally, or in a a variety of ways remotely (soap web services, xml-rpc, json-rpc, REST, etc), but always with the same interface.
* Pluggable bindings support
This support is all in the core. There are now fewer files in the SCA directory and all code specific to a given binding (local, soap, jsonrpc etc.) goes in a subdirectory under the Bindings subdirectory. The SCA core code now just knows how to use the SCA_BindingsFactory object to pull in the classes it needs to service an incoming request. The names of the desired classes are derived from the annotations e.g. if a component has an @binding.soap annotation, the SCA core code will look in SCA/Bindings/soap for the classes it needs. This is probably of limited interest unless you plan to write a binding of your own. We plan an article to describe how this works.
* Refactored bindings based on the pluggable binding support:
o local (php to php binding)
o restrpc (RPC based on HTTP GET or POST)
o soap (SOAP web services)
* Latest drop of SDO code from Tuscany (currently revision level 532769) including:
o performance enhancements
o set of fixes to DataObject destructor to eliminate crashes when the graph is not freed in the default order
* Updates to SDO extension:
o fix memory leak from SDO_DataObject (depends on Tuscany fixes above)
o add debug trace macros for debugging memory allocation
o new signature for SDO_DAS_XML::create() allows an array of schema files to be passed in
* Bug fixes
o More SCA examples that exercise some of the new bindings, and some of the old, including HelloWorlds and Email scenarios.