Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/03/2011, 17:12
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: crear select con programacion orientado a objetos

En realidad lo que esta mal es que te falta un "_" en los constructores, tenes _construct cuando deberia ser __construct.
Y tendrias que revisar varias cosas pero te sugiero que no hagas echo's, simplemente en render concatena y retorna la cadena, para imprimir llama a render en el __toString, algo asi:
Código PHP:
Ver original
  1. abstract class Element
  2. {
  3.     ...
  4.     abstract public function render();
  5.  
  6.     public function __toString()
  7.     {
  8.         return $this->render();
  9.     }
  10. }
  11.  
  12. class Select extends Element
  13. {
  14.     ...
  15.     public function render()
  16.     {
  17.         $html  = $this->traeLabel();
  18.         $html .= "<select name=" . $this->traeName() . ">";
  19.         foreach ($this->traeOptions() as $opt) {
  20.             $html .= $opt->render();
  21.         }
  22.         $html .= "</select>";
  23.         return $html;
  24.     }
  25. }

obviamente el render de option no imprime sino que retorna el string concatenado, luego para utilizar:

Código PHP:
Ver original
  1. $frutas= new Select();
  2. $frutas->creaLabel('Frutas');
  3. $frutas->creaName('frut_sel');
  4. $frutas->creaOption(new Option('Naranjas','Naranjas'));
  5. $frutas->creaOption(new Option('Fresas','Fresas'));
  6. echo $frutas;

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)