Inicio Apuntes FPApuntes DAW Ejercicio Básico 28 PHP: Generación de código HTML con herencia de clases.

Ejercicio Básico 28 PHP: Generación de código HTML con herencia de clases.

Publicado el: Última actualización: 2 Comentarios
0

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.


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&aacute;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>';
    }
}

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

2 Comentarios

Sara 18 febrero, 2021 - 6:49 PM

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 :)

Respuesta
entreunosyceros 19 febrero, 2021 - 11:15 AM

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.

Respuesta