Programación orientada a objetos con PHP (V), public vs private.

 

Modificadores de acceso: público versus privado

En los tutoriales anteriores, utilizamos el modificador de acceso público en frente de los métodos y propiedades en nuestras clases sin ninguna explicación. El modificador de acceso public solo uno de los varios modificadores que utilizamos. Aprenderemos sobre otro modificador llamado modificador de acceso private.

Mientras que el modificador de acceso público permite que un código externo o interno de la clase acceda a los métodos y propiedades de la clase, el modificador privado impide el acceso a los métodos o propiedades de una clase desde cualquier código que esté fuera de la clase.

 

El modificador de acceso «public»

El siguiente ejemplo ya debería serle familiar. En el ejemplo, la propiedad y el método de la clase se definen como públicos , por lo que el código fuera de la clase puede interactuar directamente con ellos.

 

Resultado:
El modelo de coche es Mercedes

 

El modificador de acceso «private»

Podemos evitar el acceso a las propiedades y métodos dentro de nuestras clases si los definimos con el modificador de acceso privado en lugar del modificador de acceso público .

En el siguiente ejemplo, definimos la propiedad $model como privada, y cuando intentamos establecer su valor desde fuera de la clase, encontramos un error fatal.

Resultado:
Error fatal: no se puede acceder a la propiedad privada Car :: $model

 

¿Cómo acceder a una propiedad privada?

Vimos que no tenemos acceso a propiedades privadas desde fuera de la clase, pero aún tenemos que establecer de alguna manera y obtener los valores de las propiedades.

Para interactuar con propiedades privadas, utilizamos métodos públicos porque pueden interactuar tanto con el código fuera del alcance de la clase como con el código dentro de la clase. Los métodos públicos que pueden interactuar de esta manera se dividen comúnmente en dos tipos de métodos:

  • Setters que establecen los valores de las propiedades privadas.
  • Getters que obtienen los valores de las propiedades privadas.

En el siguiente ejemplo, veremos que podemos obtener y establecer el valor de una propiedad privada, $carModel , mediante el uso de los métodos setter y getter.

Usaremos el método setModel() para establecer el valor del modelo de automóvil, y el método getModel() para obtener el valor de la propiedad.

Resultado:
El modelo de coche es Mercedes benz

 

¿Por qué necesitamos modificadores de acceso?

Necesitamos modificadores de acceso para limitar las modificaciones que el código externo puede hacer a los métodos y propiedades de las clases.

Una vez que definimos una propiedad o método como privado , solo los métodos que están dentro de la clase pueden abordarla. Entonces, para interactuar con métodos y propiedades privadas, necesitamos proporcionar métodos públicos. Dentro de estos métodos, podemos poner una lógica que pueda validar y restringir los datos que provienen de fuera de la clase.

En nuestro ejemplo, podemos validar que solo ciertos modelos de automóviles pueden abrirse camino y ser asignados a la propiedad privada $model , definiendo las alternativas permitidas para modelos en el método público setModel() . Para este propósito, definimos dentro del método setModel() una matriz de modelos de automóviles permitidos, y verificamos que solo estos modelos estén asignados a la propiedad $model.

 

 

Conclusión

Hasta ahora, hemos aprendido sobre dos modificadores de acceso:

  • public, que permite que funciones externas modifiquen el código dentro de una clase,
  • private, que evita que cualquier código externo a la clase cambie las propiedades y métodos que protege.

Vimos que, para modificar métodos y propiedades privadas, podemos usar métodos públicos que tienen el privilegio de interactuar con el código fuera del alcance de la clase. 

 

Compartir esta entrada.
 Visita mis aplicaciones 

Deja un comentario

Tu dirección de correo electrónico no será publicada.

CAPTCHA ImageChange Image