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.
