Curso PHP orientado a objetos – Clases de terceros, encapsulamiento

Una de las grandes ventajas, además de todas las ya explicadas y comentadas, es la facilidad con que se puede encapsular todo, para que en desarrollos posteriores no haya problema alguno. La implementación pasa a un segundo plano y se utiliza como una caja negra que funciona de manera simple. Los atributos: públicos, privados y protegidos; que hemos comentado en un punto anterior, son la base del encapsulamiento.

Imaginad que en una aplicación web, necesitamos generar un fichero PDF o interactuar con el servidor de correo de Gmail o Google Apps. Como es lógico, sería costoso perder tanto tiempo en desarrollar algo de cierta dificultad y que ya existe. La solución, encontrar una clase que se encargue de alguna de estas labores. Quien dice estas dos labores, dice otras muchas, pero he puesto estos dos ejemplos porque he tenido que hacer uso de los mismos hace no mucho.

¿Cómo utilizar dichas clases?

Lo primero es encontrarlas. Por ejemplo, en el caso de interactuar con el servicio de correo de Google tenemos PHP Mailer. Las clases se presentan en ficheros fuente de PHP que deberemos agregar convenientemente a nuestro código con algunas de las instrucciones (elegiremos cada una en función a nuestras necesidades) que mostramos a continuación y que seguro que habéis usado en más de una ocasión:

  • require(ruta_fichero);
  • include(ruta_fichero);
  • require_once(ruta_fichero);
  • include_once(ruta_fichero);

Una vez agregado a nuestro código ya podremos interactuar con ella. Primero la instanciaremos y luego interactuaremos con sus atributos y sus métodos. Con PHPMailer podríamos hacer algo así:

<?php 
require_once 'class.phpmailer.php'; 

$correo = new PHPMailer (); 

$correo->From = "nombre_usuario@gmail.com"; 
$correo->FromName = "Foo"; 
$correo->AddAddress ("destinatario@dominio.com"); 
$correo->Subject = "Mensaje de parte del equipo Linux Hispano"; 
$correo->Body = "<h3>Enviando con Gmail<h3/>"; 
$correo->IsHTML (true); 

$correo->IsSMTP(); 
$correo->Host = 'ssl://smtp.gmail.com'; 
$correo->Port = 465; 
$correo->SMTPAuth = true; 
$correo->Username = 'nombre_usuario@gmail.com'; 
$correo->Password = '******'; 

if(!$correo->Send()) { 
	echo 'Ha ocurrido un error: ' . $mail->ErrorInfo; 
} 
else { 
	echo 'Correo enviado con éxito'. 
} 
?>

Como podéis apreciar se siguen pasos que ya conocemos:

  1. Se referencia la clase desde el fichero en el que está implementada.
  2. Se instancia un objeto al que llamamos correo.
  3. A través de sus atributos y métodos, completamos los distintos datos importantes para el correo.
  4. Finalmente, llamamos al método send y en función de lo que nos devuelva, sabemos si se ha enviado correctamente el correo.

De forma simple, tenemos acceso a funcionalidades complejas que de otra manera no podríamos implementar y gracias a los objetos la interacción con el código de terceros es mucho más simple y transparente.

Author Description

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

  • javier parra

    muchas gracias carazo por esta nueva entrega

    salu2

  • Pingback: Bitacoras.com()

  • @javier parra: Con esta entrega doy por terminado el curso. En breve comenzaré nuevos cursos para que este apartado de Linux Hispano siga creciendo.

    Creo que es de los apartados más interesantes para el usuario y para nosotros, el tema de los cursos.

  • leik

    Muy ilustrativo, sencillo y bien explicado,,, nunca los objetos fueron tan fáciles ..

  • @leik: me alegro que te resulte sencillo, mira nuestros otros cursos que seguro que también te gustan.

  • ¡muy bueno Javi! ¡gracias por tu tiempo y trabajo!

    ¡abrazo!