Inicio
Software
Programación
HTML Programación - PHP (ini) Programación - PHP POO Programación - PHP / HTML SQL Java
Hardware
Desarrollos
Quién soy Mapa del sitio

PHP - POO Completo 5

Imprimir
Categoría: PHP - POO Completo
Escrito por Ch4rl1X Visitas: 1073

El siguiente ejemplo tiene como objetivo visualizar una clase compleja y como llamar a métodos internos.

Creamos la clase Tabla con sus atributos $mat, $cantFilas y $cantColumnas. Construimos el método con los parámetros $fi y $co que van a modificar los atributos cantFilas y CantColumnas. Luego definimos el método cargar que tendrá los parámetros $fila, $columna y $valor para devolver el array $mat con 2 valores que va a ser igual al 3er parámetro (este nos indica el valor de la celda). Continuamos con inicioTabla que imprime la cabecera de la tabla e inicioFila que imprime la etiqueta, se sigue con mostrar que imprime el valor del array a través de sus parámetros que inicializan con el constructor, se crea el método finTabla que devuelve la etiqueta final HTML. Para el método graficar ya nos extendemos a llamar a, valga la redundancia los métodos, que imprimirán la cabecera para luego con un for asignar cantFilas y CantColumnas; finalizamos llamando a los métodos finales.

<html>
<head>
<title>POO_full_5</title>
</head>
<body>
<?php
/*Clase tabla*/
class Tabla {
/*Las variables al ser una sola clase son private*/
  private $mat=array();
/*Definimos un atributo $mat como array (matriz) a la que pasaremos los parámetros*/
  private $cantFilas;
  private $cantColumnas;
/*Inicializamos el objeto contruyendo la tabla con las filas y columnas*/
  public function __construct($fi,$co)
  {
/*Llenamos los parámetros referenciando los atributos*/
    $this->cantFilas=$fi;
    $this->cantColumnas=$co;
  }
/*La función cargar contiene cada celda de la tabla*/
  public function cargar($fila,$columna,$valor)
  {
/*Llenamos el atributo mat que es un array con los valores $fila y $columna que devolverán valor*/
    $this->mat[$fila][$columna]=$valor;
  }

  public function inicioTabla()
  {
/*El inicio de Tabla no devuelve más que la cabecera*/
    echo '<table border="1">';
  }
    
  public function inicioFila()
  {
/*Idem con fin de la etiqueta*/
    echo '<tr>';
  }

  public function mostrar($fi,$co)
  {
/*Mostramos la matriz mat con sus valores*/
    echo '<td>'.$this->mat[$fi][$co].'</td>';
  }

  public function finFila()
  {
/*Fin de la fila*/
    echo '</tr>';
  }

  public function finTabla()
  {
/*Idem FIN*/
    echo '</table>';
  }
/*Funcion sin parámetros*/
  public function graficar()
  {
/*Inicializamos la tabla imprimiendo la cabecera*/
    $this->inicioTabla();
/*Recorremos el atributo cantFilas que es llenado con cargar*/
    for($f=1;$f<=$this->cantFilas;$f++)
    {
/*Inicializamos fila y llamamos al método inicioFila*/
      $this->inicioFila();
/*Completamos las columnas con el atributo cantFilas*/
      for($c=1;$c<=$this->cantColumnas;$c++)
      {
/*Se devuelve el método mostrar con valores, como se definen al construir la clase no generamos valores ($f y $c)*/
        $this->mostrar($f,$c);
      }
/*Se imprime el fin de la fila*/
      $this->finFila();
    }
/*Se imprime el fin de la tabla*/
    $this->finTabla();
  }
}
/*Dimensiones de la tabla*/
/*Llenar con 
1er Parámetro = cantidad de filas
2do Parámtetro = cantidad de columnas */
$tabla1=new Tabla(2,3);
/*
Se completa el objeto con los valores de la tabla
 */
$tabla1->cargar(1,1,"1");
/*Detalle de parámetros
Parámetro 1 = Valor de la fila
Parámetro 2 = Valor de la Columna
Parámetro 3 = Valor impreso en Celda */
$tabla1->cargar(1,2,"2");
$tabla1->cargar(1,3,"3");
$tabla1->cargar(2,1,"4");
$tabla1->cargar(2,2,"5");
$tabla1->cargar(2,3,"6");
$tabla1->graficar();
?>
</body>
</html>

Instanciamos el método Tabla que al tener un constructor que obtiene el número de columnas y filas se lo tenemos que definir. Al haber definido los parámetros estamos listos para cargar las celdas que compongan la tabla. Llamamos a la variable que inicia el objeto para cargarla y luego graficamos.

Resultado -> Click aquí para visualizar.

Espero que sirva, saludos, Ch4rl1X!