Lección 21 - Métodos con Visibilidad Privada (Private)



Los métodos con visibilidad privada solamente pueden ser usados dentro de la clase  que los contiene. Para poder entender la forma en que funciona la visibilidad privada podemos analizar el siguiente código PHP:
<?php
class mensaje{    
//método privado     
 private function hola(){
                      echo "Hola ";
                    }
}
?>

En el script PHP anterior  hemos creado una clase llamada “mensaje” usando la palabra clave “class” y dentro de dicha clase hemos insertado un método con visibilidad privada. El método con visibilidad privada usa la palabra “private” antes del nombre del método que es “hola”. Dicho método imprime en pantalla un mensaje “Hola”.

Ahora se va a agregar otro método a la clase anterior, el cual se llama “comoEstan” y dicho método va a usar el método privado “hola”. El código PHP resultante es el siguiente:

<?php class mensaje{        //método privado  
 private function hola(){
                 echo "Hola ";
        }
   //método que usa el método privado
   public function comoEstan(){
                $this->hola();
                echo "cómo están? saludos";
               }
}
?>
Podemos observar en el script PHP de la parte superior que para usar el método con visibilidad privada desde el interior de  la clase que lo contiene se debe usar la palabra “$this”, después debemos de colocar una flecha “->”, el nombre del método y unos paréntesis (). Ahora para poder usar el método “comoEstan” debemos de instanciar un objeto y debemos de agregar el siguiente código PHP:

//instanciando objeto y ejecutando uno de los métodos
$objeto=new mensaje();
$objeto->comoEstan();

En el código PHP de la parte superior hemos creado un objeto  en la primera línea. El objeto se instancia creando una variable “$objeto”, después colocamos la palabra clave “new” y el nombre de la clase junto a unos paréntesis (). Para usar uno de los método colocamos “$objeto”, una flecha “->” y finalmente el nombre del método y unos paréntesis ().Ahora ejecutamos el script PHPanterior y  el resultado es el siguiente:

Hola cómo están?saludos

Todo lo anterior demuestra que los métodos con visibilidad privada o private se pueden usar desde dentro de la clase que las contiene.

Ahora voy a demostrar que sí un método con visibilidad privada se ejecuta desde el exterior de una clase se genera un mensaje de error. Para ello voy a usar el siguiente código PHP:

<?php
class datosPersonales{         
//propiedades privadas
   private $nombre="Raymundo Cerón";            private $pais="México";           
  //método privado
   private function display(){
                 echo $this->nombre;     
                 echo "<br/>";
                 echo $this->pais;
               }
}
?>

En el script PHP anterior hemos creado una clase llamada “datosPersonales”, la cual contiene dos propiedades privadas, una se llama “$pais” y la otra “$nombre”. Después  hay un método con visibilidad privada; la visibilidad privada se declara usando la palabra “private”. El nombre del método privado es “display”.

Ahora es momento de intentar ejecutar el método privado desde afuera de la clase. Vamos a agregar las siguientes líneas de código PHP al script anterior:

//instanciando objeto
$objeto=new datosPersonales();
$objeto->display();

Se puede apreciar  en las líneas de código PHP de la parte superior que hemos instanciado un objeto usando la palabra clave “new” y después el nombre de la clase que es “datosPersonales”. También se puede ver que estamos ejecutando el método  privado “display”. Para ello hemos colocado “$objeto”, una flecha “->” y el nombre del método.

Sí ejecutamos el script PHP anterior se genera el siguiente mensaje de error:

Fatal error: Uncaught Error: Call to private method datosPersonales::display()...


Todo lo anterior demuestra que un método con visibilidad privada no puede ser usado desde afuera de una clase pues genera un mensaje de error.

No comments:

Post a Comment