Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

setar id del objeto que lo contiene en el objeto hijo

Estas en el tema de setar id del objeto que lo contiene en el objeto hijo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente, estoy implementando una composición. Composición: A <>-1----------------n- B Código PHP: class  B {     private  $id ;          public  guardar () {      Persistencia ...
  #1 (permalink)  
Antiguo 23/06/2009, 10:00
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 8 meses
Puntos: 2
setar id del objeto que lo contiene en el objeto hijo

Hola gente, estoy implementando una composición.


Composición:
A <>-1----------------n- B

Código PHP:
class B
{
    private 
$id;
    
    public 
guardar()
{
    
Persistencia::Save ($this)
}

}

class 
A
{
    Private 
b;

 public function 
agregarB(B $b)
{
      
$this->$b
}

public function 
save()
{

Persistencia:: save ($this)
}


persistencia lo que hace es insertar los atributos del objeto que le paso y por cada objeto que haya dentro del objeto, invoca a su propio método save().

cuando persistencia invoca el metodo save, que envia el objeto a persistir, me doy cuenta que en la tabla necesita el id de la clase A, y aca viene la cuestión. Agregar un atributo idA me parece medio grasa, y tener un atributo A me generaría una referencia cruzada.
de que manera lo puedo saber el atributo id de A desde B sin cometer ningún atentado contra la oop?


muchas gracias desde ya
  #2 (permalink)  
Antiguo 23/06/2009, 12:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: setar id del objeto que lo contiene en el objeto hijo

Recuerda que no todo es mágico ni hay soluciónes perfectas, lo que tu debes de hacer es como en una base de datos relacional, guardar en alguna parte de B el link que lo hace al A, si no es complicado hacerlo, una forma es así:
Código php:
Ver original
  1. public function agregarB(B $b)
  2. {
  3.       $this->b = $b
  4.       $this->b->id_a = $this->id;
  5. }

O algo por el estilo, si no es muy complicado que puedas extraer el dato, si no le dices a la clase como obtenerlo.

Por ejemplo esto yo lo uso en un componente grid que tengo:
Código php:
Ver original
  1. public function setFormatter($formatter) {
  2.           $this->formatter = $formatter;
  3.           $this->formatter->setGrid($this);
  4. }

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:15.