Portada » Lenguaje PHP » PHP: Propiedades de Protected y Private

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:

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Deja un comentario

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

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad