Inicio Apuntes FPApuntes DAWEjercicio 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 por entreunosyceros
Publicado el: Última actualización:

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.

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
Resumen de privacidad
cookies entreunosyceros

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible.

La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudarnos a comprender qué secciones de la web encuentras más interesantes y útiles.

Nunca almacenamos información personal de ningún tipo.

Tienes toda la información sobre privacidad, derechos legales y cookies en nuestra página sobre la política de privacidad o en la página sobre nuestra política de cookies.

Cookies necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza las siguientes cookies adicionales:

- Mailchimp: Recordar si ya estás suscrito al boletín de noticias y sino ofrecértelo al salir.

- Accesibilidad: Para saber tus ajustes de accesibilidad en cada visita.

- Comentarios: Saber si has leído y aceptado nuestra política de privacidad a la hora de dejar un comentario en la web.

- Google Analytics: Localización para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

- Goggle Adsense: Anuncios personalizados según tu geolocalización y preferencias.

Dejar estas cookies activadas nos permite mejorar nuestra web.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.