Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/02/2005, 00:18
Avatar de Webstudio
Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años, 2 meses
Puntos: 69
Existen maneras de simular la persistencia de objetos a través de distintas llamadas, y esto es algo que se utiliza hace mucho tiempo en PHP. Tan simple como crear una tabla con los atributos de tu objeto, y luego un Mapper, que cargue esos datos desde la tabla, instancie el objeto necesario, le cargue los datos y lo devuelva.

Supongamos que tenemos la definición de un objeto en un archivo class.Objeto.php:
Código PHP:
<?php
class Objeto
{
    var 
$alto;
    var 
$ancho;
    var 
$largo;
    
    function 
Objeto()
    {
    
    }
    
    function 
superficie()
    {
        return 
$this->ancho $this->alto $this->largo;
    }
}
?>
Luego, tenemos su Mapper, llamado class.ObjetoMapper.php :

Código PHP:
<?php
class ObjetoMapper
{
    function &
cargar$id )
    {
        
$query "SELECT alto, ancho, largo FROM tabla WHERE id=$id";
        
        
//... ejecutamos un query de la manera que prefieran
        //... y obtenemos el array con los datos
        
$row mysql_fetch_object($rs);
        
        require_once(
'class.Objeto.php');
        
$obj =& new Objeto();
        
$obj->alto $row->alto;
        
$obj->ancho $row->ancho;
        
$obj->largo $row->largo;
        
        return 
$obj;
    }
}
?>
Y finalmente, podemos invocar el uso de esta manera :
Código PHP:
<?php
$id 
$_SESSION['id'];
$objeto =& ObjetoMapper::cargar($id);

// $Objeto ya es un Objeto instanciado
echo $objeto->superficie();
?>
De esta manera se mantiene separado, un objeto instanciado, de la capa de datos que lo sostiene (la Base de Datos en este caso) delegando el conocimiento de ambos estados ( instancia y base de datos ) al Mapper, que sabe como encargarse de leer un Objeto del contenedor de datos y devolverlo instanciado. En este ejemplo, para grabar un objeto en la base, tan solo habría que pasarle la instancia al Mapper, que sacaría los atributos, formaría el Query y lo ejecutaría contra la base, grabando el objeto.

Espero que les haya servido el ejemplo. Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com