Ver Mensaje Individual
  #8 (permalink)  
Antiguo 01/04/2007, 11:00
zsamer
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: Como se implementa la agregacion y composicion en php

Gracias por las correcciones, estoy completamente de acuerdo, antes de publicar el tema pensé en escribir que "no tomaran en cuenta la lógica del ejemplo ya que no la tiene", bueno, pero no lo hice, no se me ocurrió otro ejemplo, lo hice para mostrar mi duda, a que concepto corresponde cuando una clase crea a otra y la retorna.

bueno quizás un ejemplo de mi duda anterior, que tenga sentido podría ser:

Código PHP:
class Page {
    private 
$title;
    private 
$html;
    public function 
__construct($title='Default Page'){
        
$this->title=$title;
        
$this->html='';
    }
    public function 
makeHeader($header){
        
$this->html.='<html><head><title>'.
         
$this->title.'</title></head><body>'.$header;
    }
    public function 
makeBody($content=array()){
        return new 
Table($this,$content);
    }
    public function 
makeFooter($footer){
        
$this->html.=$footer.'</body></html>';
    }
    public function 
display(){
        return 
$this->html;
    }
}


class 
Table {
    private 
$page;
    private 
$content;
    private 
$id;
    public function 
__construct(&$page,$content){
        
$this->page=&$page;
        
$this->content=$content;
        
$this->id='defaultID';
    }
    public function 
setId($id){
        
$this->id=$id;
    }
    public function 
build($colorA,$colorB){
        
$this->page->html.='<table id="'.$this->id.'" width="100%">';
        
$i=0;
        foreach(
$this->content as $row){
            
$bgcolor=($i%2)?$colorA:$colorB;
            
$this->page->html.='<tr bgcolor="'.$bgcolor.'">
             <td>'
.$row.'</td></tr>';
            
$i++;
        }
        
$this->page->html.='</table>';
        return 
$this->page->html;
    }
}


$page=new Page();
$page->makeHeader('<div>Header</div>');

$table=$page->makeBody(range(0,20));
$table->setId('maincontent');
$table->build('#ffcc00','#eeeeee');

$page->makeFooter('<div>Footer</div>');
echo 
$page->display(); 
Bueno espero comentarios si este ejemplo tiene algo o nada de composición.


PD: Aun sigo siendo novato, solo llevo algunos meses en oop.

Última edición por zsamer; 01/04/2007 a las 11:28