Hola. ¿Cómo están? Bienvenidos continuando con el curso de PHP 8, hoy veremos lo que es la encapsulación de objetos en PHP 8. Así poco a poco ir conociendo más acerca de la programación orientada a objetos POO.
¡Empecemos!
¿Qué es la encapsulación de objetos en PHP?
El encapsulamiento es uno de los pilares fundamentales de la programación orientada a objetos (POO) y se refiere al concepto de ocultar los detalles internos de un objeto y exponer solo una interfaz pública para interactuar con él (visibilidad del objeto). El encapsulamiento se logra mediante la visibilidad de los atributos y métodos de una clase.
El encapsulamiento se puede controlar utilizando tres modificadores de acceso:
Publico (Public)
Los atributos y métodos marcados como públicos (public) son accesibles desde cualquier lugar, tanto desde dentro de la clase como desde fuera de ella.
Protegido (Protected)
Los atributos y métodos marcados como protegidos (protected) son accesibles desde dentro de la clase y también desde las clases hijas que hereden de esta clase.
Privado (Private)
Los atributos y métodos marcados como privados (private) son accesibles sólo desde dentro de la clase, no pueden ser accedidos desde fuera, incluso por las clases hijas.
La sintaxis para definir atributos y métodos con diferentes niveles de visibilidad es la siguiente:
class MiClase { // Atributo público public $atributoPublico; // Atributo protegido protected $atributoProtegido; // Atributo privado private $atributoPrivado; // Método público public function metodoPublico() { // Código del método público } // Método protegido protected function metodoProtegido() { // Código del método protegido } // Método privado private function metodoPrivado() { // Código del método privado } }
Ejemplo de encapsulamiento
En primer lugar, vamos a crear el archivo encapsulamiento_objetos.php en la ruta de nuestro proyecto.
Seguidamente, vamos a crear una clase con tres atributos una pública, otra protegida y por ultima una privada.
class MiClase{ public $valor1 = "Publico"; protected $valor2 = "Protegido"; private $valor3 = "Privado"; }
En segundo lugar, vamos a crear los métodos de tipo público, protegido y privado donde se imprimirán los tres atributos de la clase.
public function ImprimirValorPublico(){ echo "Valor desde funcion: " . $this->valor1; echo "<br>"; } public function ImprimirValorProtegido(){ echo "Valor desde funcion: " . $this->valor2; echo "<br>"; } public function ImprimirValorPrivado(){ echo "Valor desde funcion: " . $this->valor3; }
De manera similar, vamos a crear otra clase MiClase2 que herede de la clase MiClase. Esta clase sólo tendrá un método que mande a imprimir el atributo de tipo protegido.
class MiClase2 extends MiClase{ public function imprimirValorProtegido2(){ echo $this->valor2; } }
Hasta aquí ya tenemos listo nuestras clases, ahora para probar el encapsulamiento de datos creamos un objeto $valor que se instancia de la clase “MiClase”.
$valor = new MiClase();
Al definir el atributo $valor1 de tipo público puede ser accedido desde cualquier parte del programa.
echo $valor->valor1; $valor->ImprimirValorPublico();
Al definir el atributo $valor2 de tipo protegido sólo puede ser accedido desde dentro de la clase, métodos de la misma clase y clases heredadas.
$valor->ImprimirValorProtegido(); $valor2 = new MiClase2(); $valor2->imprimirValorProtegido2();
Al definir el atributo $valor3 de tipo privado solo puede ser accedido desde dentro de la clase o métodos de la misma clase.
$valor->ImprimirValorPrivado();
Es importante tener en cuenta que el encapsulamiento es una buena práctica en la POO, ya que ayuda a mantener la integridad del objeto y proteger sus atributos y métodos internos de modificaciones no autorizadas desde fuera de la clase. Para observar los resultados abrimos nuestro navegador favorito.
Ejercicios de la clase
1.- Crea una clase CuentaBancaria que tenga propiedades privadas para el saldo y el titular de la cuenta. Proporciona métodos públicos para obtener el saldo y el titular, así como para depositar y retirar dinero de la cuenta. Aplicar el encapsulamiento correctamente para proteger los datos de la cuenta.
Puedes descargarte el código fuente de este ejemplo y todos los demás en el repositorio de GitHub
Hasta aquí el tutorial de hoy encapsulamiento de objetos en PHP 8, si tienes alguna consulta puedes dejarnos un comentario o si quieres saber más acerca de este tema puedes visitar el sitio oficial de PHP. En el próximo tutorial veremos lo que son las Clases abstractas en PHP 8.
Saludos y éxitos.

Victor Peña
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.