Encapsulamiento de objetos en PHP

Encapsulamiento de objetos en PHP

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

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.

Deja un comentario

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