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 6

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

Si hiciste el tutorial anterior entonces este te va a ser fácil, ya que sólo modificamos declaración del método como "private", esto hará al igual que en el atributo... que no pueda ser accedido desde el mismo método o desde otras clases.

<html>
<head>
<title>POO_full_6</title>
</head>
<body>
<?php
class Tabla {
/*Mismo ejemplo anterior
Ahora visualizamos el permiso que definimos al crear una funcion que puede ser private o public */
  private $mat=array();
/*Los atributos de la clase sólo pueden ser accedidas desde ella ->"private"*/
  private $cantFilas;
  private $cantColumnas;
/*Los métodos __construct no pueden ser private, así que siempre se definen como public*/
  public function __construct($fi,$co)
  {
    $this->cantFilas=$fi;
    $this->cantColumnas=$co;
  }
/*La función cargar se define como public, el permiso indica que podrá ser accedida desde otra clase.
También puede ser referenciada desde la misma clase.
 *  */
  public function cargar($fila,$columna,$valor)
  {
    $this->mat[$fila][$columna]=$valor;
  }
/*
La siguiente indica que privamos la función a que sólo pueda ser referenciada desde la misma clase, 
si quisieramos instanciar el valor por afuera tampoco nos deja generando un error
 * Private: El método se puede inicializar y funcionar en la clase, pero no en el mismo método.
 * Public: El método puede ser llamado desde afuera de la clase.
 *  */
  private function inicioTabla()
  {
    echo '<table border="1">';
  }

  private function inicioFila()
  {
    echo '<tr>';
  }
  
  private function mostrar($fi,$co)
  {
    echo '<td>'.$this->mat[$fi][$co].'</td>';
  }

  private function finFila()
  {
    echo '</tr>';
  }

  private function finTabla()
  {
    echo '</table>';
  }

  public function graficar()
  {
    $this->inicioTabla();
    for($f=1;$f<=$this->cantFilas;$f++)
    {
      $this->inicioFila();
      for($c=1;$c<=$this->cantColumnas;$c++)
      {
        $this->mostrar($f,$c);
      } 
      $this->finFila();
    }
    $this->finTabla();
  }
}

$tabla1=new Tabla(2,3);
$tabla1->cargar(1,1,"1");
$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>

Como vemos en el anterior, el gráfico se instancia de la misma manera con la variante que los métodos no pueden ser llamados fuera de la clase, ni desde si mismos, podrían probar tratar de cargar por ejemplo el inicioFila desde afuera con un las definiciones public o private, así como también intentar referenciar el valor del atributo en el mismo método como public.

Resultado -> Click aquí para visualizar

Espero que sirva, saludos, Ch4rl1X!