23. Encapsulamiento en PHP

En este capítulo hablaremos sobre la visibilidad. Existen 3 formas de declarar propiedades o métodos dentro de la clase:

  • Declarar de forma pública: public
  • Declarar de forma privada: private
  • Declarar de forma protegida: protected

Si declaramos a una propiedad como protegida o privada no vamos a poder acceder directamente a su valor. Si la declaramos como pública no hay problema. La única forma que vamos a tener para acceder a dichas propiedades es mediante algún método que hayamos definido dentro de nuestra propia clase.

Cuando no definimos ninguna palabra reservada delante de una propiedad o método, se sobreentiende que va a ser público.

Encapsulamiento

A este proceso en el cual decidimos la forma de declarar nuestras propiedades u objetos se le conoce como encapsulamiento.

Diferencia entre protegida y privada

La propiedad pública es de acceso común desde cualquier parte, la propiedad protegida puede ser accedida desde la propia clase y también desde la clase que se extiende o subclase, la propiedad privada sólo puede ser accedida desde la propia clase donde se ha declarado como privada. Por otro lado, sólo vamos a poder modificar las propiedades públicas y protegidas, las privadas desde una subclase.

Ejm

  class MyClass {
    public $public = "Public";
    protected $protected = "Protected";
    private $private = "Private";

    function printHello(){
      echo $this->public . "<br />";
      echo $this->protected . "<br />";
      echo $this->private . "<br />";
    }
  }

  $objeto = new MyClass;

  echo $objeto->public;

  echo "<br />";
  echo "<br />";
  // echo $objeto->protected; VA A DAR ERROR YA QUE ES PROTETIDO
  // echo $objeto->private; VA A DAR ERROR YA QUE ES PRIVADO
 
  echo $objeto->printHello();