Tabla de contenido
En este ejercicio 28 PHP, vamos a crear una clase que gestione un elemento genérico de HTML como es Select. Esta clase contendrá tres atributos que permitan almacenar el nombre, el valor y la etiqueta del elemento.
Tendrá además tres funciones (leeValor, leeNombre, leeEtiqueta) que devolverán el valor de cada uno de los atributos. De modo similar, se tendrán otras tres funciones que permitirán asignar valor a cada uno de los atributos (lo que vienen siendo los métodos get y set).
Se creará una segunda clase heredada de la anterior que gestionará las opciones de los elementos Select del HTML: <option value=”valor”>etiqueta</option> El constructor de esta clase tendrá dos argumentos opcionales para asignar valor a los atributos etiqueta y el valor. El método muestra escribirá (con la función echo) el código HTML de dicha opción, por ejemplo: <option value=”1″>Lunes</option>
Se escribirá una tercera clase (Seleccion) derivada de Elemento que representará una lista de selección de HTML: <select name=”lista”> El único atributo de la clase será un vector (array) privado de objetos de la clase anterior (Opcion). Tendrá un método (nuevaOpcion) que permitirá añadir opciones al vector anterior. Dispondrá de dos argumentos de tipo String para dar los dos datos de la opción (etiqueta y valor). El método muestra escribirá (con la función echo) el código HTML de la lista. Se puede ver el código que vamos a ver a continuación funcionando en el siguiente enlace.
Para terminar se creará una página php que muestre una lista select usando la última de las clases (Seleccion).
Código Index del ejercicios 28 PHP
A continuación el código del index y de cada una de las clases …
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Práctica 28</title> </head> <body> <?php // Más info en la práctica 25 spl_autoload_register(function($class) { $class = str_replace('\\', '/', $class); require "{$class}.php"; }); //Se instnacia un nuevo select $select = new \classes\SelectElement('Dias'); $dias = array( 1 => 'Lunes', 2 => 'Martes', 3 => 'Miércoles', 4 => 'Jueves', 5 => 'Viernes', 6 => 'Sábado', 7 => 'Domingo', ); //Para cada dia se añade un nuevo option foreach ($dias as $value => $tag) { $select->nuevaOpcion($tag, $value); } //Se muestra el select $select->muestra(); ?> </body> </html>
Archivo classes/Element.php
Este y los demás códigos que quedan por mostrar yo los guardé en la carpeta classes.
<?php namespace classes; class Element { protected $name; protected $value; protected $tag; public function getName() { return $this->name; } public function getValue() { return $this->value; } public function getTag() { return $this->tag; } public function setName($name) { $this->name = $name; } public function setValue($value) { $this->value = $value; } public function setTag($tag) { $this->tag = $tag; } }
Archivo classes/OptionElment.php
<?php namespace classes; class OptionElement extends Element { public function __construct($tag = null, $value = null) { $this->tag = $tag; $this->value = $value; } public function muestra() { echo '<option value="' . $this->value . '">' . $this->tag . '</option>'; } }
Archivo classes/SelectElement.php
<?php namespace classes; use classes\OptionElement; class SelectElement extends Element{ protected $options = array(); public function __construct($name) { $this->name = $name; } public function nuevaOpcion($tag , $value) { $option = new OptionElement($tag, $value); $this->options[] = $option; } public function muestra(){ echo '<select name"' . $this->name . '">'; foreach ($this->options as $option) { echo $option->muestra(); } echo '</select>'; } }
2 Comentarios
Hola, estoy usando tu web para practicar pero los códigos de las soluciones han dejado de aparecer. ¿Podrías volver a subirlos?
Un saludo :)
Ya está resubido. Si encuentras más artículos a los que le falte el código, deja un comentario. Es que cuando cambié de hosting, se me quedaron algunos códigos por el camino. Salu2.