Visibilidad en PHP

Visibilidad:

La visibilidad es un tipo de acceso que se da a las propiedades y/o metodos de una Clase.
Esta puede definirse anteponiendose con una palabra reservada, hay 3 tipos de visibilidad:

  1. Public:

    Significa que puede ser accesado sin restricción.

  2. Protected:

    Solo puede ser accesado por una clase heredada y la clase que lo define.

  3. Private:

    Solo puede ser accesado por la clase que lo define.

1. Visibilidad en las Propiedades:

Las propiedades de la clase tiene que tener declarada una visibilidad, la palabra reservada var que se usaba en PHP 4 ya no es valida para esta versión.

Ejemplo:

 
class Persona
{
  public $nombre = 'Cesar';
  protected $telefono = '333-1111';
  private $email = 'Email';
}

$cesar = new Persona();
echo $cesar->nombre; //Cesar
echo $cesar->telefono; //Fatal error
echo $cesar->email; //Fatal error

Clase que hereda:

 
class Alumno extends Persona
{
  public function __construct()
  {
    echo $this->nombre; //Cesar
    echo $this->telefono; // 333-1111
    echo $this->email; //Undefined
  }
}

2. Visibilidad en los Metodos:

En mi post anterior escribí sobre Constructores y Destructores, estos son los llamados Metodos Mágicos en PHP 5, estos son de tipo public. Cuando un metodo no tiene un tipo de acceso (public, protected, private), son tomados como public

 
class Persona
{    
  public function __construct() { }
    
  public function getNombre() { }

  protected function getTelefono() { }

  private function getEmail() { }

  // es public
  function getDatos()
  {
    $this->getNombre();
    $this->getTelefono();
    $this->getEmail();
  }
}

$cesar = new Persona();
$cesar->getNombre(); // lo ejecuta
$cesar->getTelefono(); // Fatal Error
$cesar->getEmail(); // Fatal Error
$cesar->getDatos(); // ejecuta los 3 metodos

Algún comentario, sugerencia o critica constructiva, bienvenida sea.

Recursos:

También te puede interesar

One Comment

  1. Operador de resolucion :: | Craftyman Blog
    oct 07, 2008 @ 07:08:05

    [...] About Visibilidad en PHP [...]