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.