Introducción

Los Objetos de Datos de Servicio (en inglés Service Data Objects - SDOs) habilitan a las aplicaciones de PHP para trabajar con datos de diferentes orígenes (como una consulta de base de datos, un fichero XML, y una hoja de cálculo) usando una única interfaz.

Cada tipo diferente de origen de datos necesita un Servicio de Acceso a Datos (en inglés Data Access Service - DAS) para proporcionar acceso a los datos en el origen de datos. En una aplicación de PHP se usa un DAS para crear una instancia de SDO que representa alguna información del origen de datos. Se puede entonces establecer y obtener valores en la instancia del SDO usando la interfaz estándar de SDO. Finalmente se usa un DAS para volver a escribir los datos modificados en un origen de datos, normalmente el mismo.

Véase la lista de Servicios de Acceso a Datos para los detalles de los que están actualmente disponibles. Además de los DAS proporcionados, SDO también proporciona interfaces para que sean implementados otros (véase la sección sobre la Interfaz de Servicios de Acceso a Datos de SDO para más detalles).

Esta extensión deriva de conceptos tomados de la » especificación de Objetos de Datos de Servicio. Incluye una versión del SDO de » Apache Tuscany para proyectos C++.

La escrutctura de un Objeto de Datos de Servicio

Una instancia de un Objeto de Datos de Servicio se compone de un árbol de objetos de datos. El árbol está definido por relaciones de contención entre los objetos de datos. Por ejemplo, un objeto de datos Compañía podría consistir en varios objetos de datos Departamento y, así, la Compañía tendría una relación de contención con los Departamentos.

Un SDO también puede tener referencias de no contención entre objetos de datos del árbol. Por ejemplo, un objeto de datos Empleado podría hacer referencia a otro empleado para identificar un mentor de profesión.

Además de existir referencias entre los objetos de datos, estos también pueden tener propiedades primitivas. Por ejemplo, el objeto de datos Compañía podría tener una propiedad llamada "nombre" de tipo string, para contener el nombre de la compañía (por ejemplo, "Acme").

Cada una de estas propiedades de un objeto de datos (relaciones de contención, referencias de no contención, o propiedades primitivas) pueden ser polievaluadas o monoevaluadas. En el ejemplo de arriba, Departamentos es polievaluada y el nombre de la Compañía es monoevaluada.

En PHP, cada objeto de datos de SDO es representado como un objeto de PHP. Se pueden acceder a las propiedades del objeto de datos usando la sintaxis de objeto o la sintaxis de array asociativo. Se verán algunos ejemplos de esto más tarde.