Lenguaje PHPPOO orientada a objetos

PHP: Propiedades de Protected y Private

PHP: Propiedades de Protected y Private. En muchos de mis proyectos de desarrollo en PHP,  finalizo en su mayoria con las clases que tienen funciones no públicas que no tienen intención de extender mas adelante.

Entonces como debemos declarar estos como protegido o privado?

Puedo ver las opciones en ambos haciéndolos privado es un punto mucho más conservador, pero se puede ver que podría hacerse protegidos mas tarde si quiero el método que se extiende y se deja en claro qué métodos se extienden por las clases.

En los ejemplo de PHP que hemos visto hasta ahora,  las propiedades se definen utilizando la palabra reservada “public”. En su lugar, podemos definir las propiedades como “protected” o “private” dependiendo.

PHP: Propiedades de Protected y Private

Si se intenta acceder a las propiedades “protected” y “private” utilizando el código “$objeto->propiedad” desde el script que crea el objeto, se produce un error. veamos el ejemplo a continuación.

class ClasePadre
{
    protected $protegida = 'Protegida';
    private $privada = 'Privada';
 
    function imprime_las_propiedades() {
        echo $this->protegida . ", " . $this->privada;
        echo "n";
    }
}
 
$obj = new ClasePadre();

// Las siguientes sentencias devuelven un error de la forma
// PHP Fatal error:  Cannot access protected property ClasePadre::$protegida
echo $obj->protegida; // Error Fatal
echo $obj->privada;   // Error Fatal
 
$obj->imprime__las_propiedades(); // Imprime "Protegida, Privada"

Ambos tipos tienen sus opciones, está en su comportamiento cuando se crea una clase derivada de otra: Una propiedad “protected” es heredada y puede ser redefinida en la clase derivada, pero si se intenta acceder a una propiedad “private” en la clase hija se obtiene el valor “undefined”. veamos el ejemplo.

class ClaseHijo extends ClasePadre
{
    // Podemos redeclarar la variable protected
    protected $protegida = 'Protegida Hija';
 
    function imprime_las_propiedades() {
        echo $this->protegida . ", " . $this->privada;
        echo "n";
    }
}
 
$obj2 = new ClaseHijo();
echo $obj2->protegida . "n"; // Error Fatal
 
// Las siguiente sentencias devuelven un error de la forma:
// PHP Notice:  Undefined property: ClaseHijo::$privada
echo $obj2->privada . "n";
$obj2->imprime_las_propiedades(); // Imprime "Protegida Hija,"

¿Cuál es la diferencia entre public, private y protected en las aplicaciones PHP?

Veamos a continuación la respuesta:

A grandes rasgos, estas son sus diferencias:

  • public : Hace que la variable/función se pueda acceder desde cualquier lugar, como por ejemplo otras clases y otras instancias de esa misma clase.
  • private: Hace que la variable/función solamente se pueda utilizar desde la misma clase que las define.
  • protected: Hace que la variable/función se puede acceder desde la clase que las define y también desde cualquier otra clase que herede de ella.

En otras palabras mas suaves podemos aclarar que:

  1. private = solo tú
  2. protected = tú y tus descendientes
  3. public = cualquiera.
PHP Propiedades de Protected y Private
PHP Propiedades de Protected y Private

Referencias:

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba