PHP OO En Practica: Class EnviaMail: Una Class útil para Empezar!

En este artículo estaré creando una simple class llamada EnviaMail que como su nombre lo dice; realiza el envío de E-mails de forma eficiente, utilizando el paradigma de Orientación a Objetos.
Compartir:

Class EnviaMail: Construyendo una Simple Class para Enviar Emails!

Download ClassEnviaMail

Primer Paso: En Primer lugar necesitaremos crear una carpeta llamada "Controladores" que es donde alojaremos nuestro archivo 'EnviaMail.class.php' que contendrá a nuestra 'class EnviaMail':

Archivo Controladores/EnviaMail.class.php


<?php
/**
 * Author: MiSCapu
 * Class EnviaMail
 *
*/
    /**
    * @namespace MiSCapu: Creo un namespace para evitar posibles conflictos de nombres de métodos, variables o constantes;
    * que podrían ocurrir en el script.
    */
    namespace MiSCapu;

/***
 * @class EnviaMail: Class que permite el envío de un Mail
*/
class EnviaMail
{
    /**
     * @var string $remitente: contiene los datos del remitente del mail.
     * @var string $destino: contiene los datos del destino del mail.
     * @var string $asunto: contiene los datos del asunto del mail.
     * @var string $cuerpo: contiene los datos del cuerpo del mail.
    */
    private $remitente;
    private $destinos;
    private $asuntos;
    private $cuerpos;
    /**
     * @method __construct: es apropiado aquí este método mágico que nos brinda PHP ya que 
     * realizaremos un inicio del objeto $emailer instanciando a la class EnviaMail y 
     * necesitamos preparar este objeto para que sea enviado con sus (campos remitente, 
     * destino, asunto y cuerpo que estan alojados en las variables private antes informadas)
     * @param string $elRemitente: este parámetro incluye los datos del remitente.
    */
    function __construct($elRemitente)
    {
        /**
         * Accedemos a la variable private $remitente con la pseudovariable '$this' que está 
         * disponible para cuando un método o una variable va a ser invocada.
        */
        $this->remitente = $elRemitente;
        /**
         * Accedemos a la variable private $destino con la pseudovariable '$this'.
        */
        $this->destinos = array();
    }

    public function agregaDestino($elDestino)
    {
        /**
         * @function array_push: Esta función Adiciona al array el valor de las variables 
         * que se puedan pasar; esta adición del contenido de las variables estará al final 
         * del array (ejemplo:
         * $nombres = 1-miguel, 2-juan
         * array_push($nombres, "Carlos") ===> el resultado en pantalla será:
         * 1-miguel
         * 2-juan
         * 3-Carlos
         */
        array_push($this->destinos, $elDestino);
    }/** @noinspection PhpInconsistentReturnPointsInspection */

    /**
     * @return mixed
     *
     * @method setAsunto: setando al atributo Asunto que es private y lo setamos; lo cual hace 
     * que este atributo sea solo accesado travez de un método de la class EnviaMail que en este
     * caso sería setAsunto. Osea este método lo que hace es poner a disposición al atributo 
     * asunto que tenga el mail
     *
     * @param string $elAsunto: es el parámetro que contiene el asunto de nuestro e-mail
     *
     * @var string $asuntos: atributo private declarado al principio del código al que e 
     * accesa en esta función
     */
    public function setAsunto($elAsunto){
        $this->asuntos = $elAsunto;
    }

    /**
     * @method setCuerpo: setando el atributo cuerpos a travéz del método setCuerpo.
     * @param string $elCuerpo: que almacena los valores que pueda tener la variable private $cuerpos.
     */
    public function setCuerpo($elCuerpo){
        $this->cuerpos = $elCuerpo;
    }
    /**
     * @method enviaMail: método que accesa mediante la pseudovariable $this al atributo 
     * private destino, luego mediante el constructor foreach (solo actua con arrays y objetos) 
     * recorremos el array dado por $this->destinos y en cada iteración le asigna un valor 
     * al parámetro $eldestino luego mediante:
     * @var string $resultado: inicia el envio de un email para el e-mail que cumpla 
     * con los datos ingresados. Luego muestra un mensaje que dice que el mensaje se ha 
     * enviado de manera satisfactoria para $elDestino
    */
    public function enviaMail(){
        foreach ($this->destinos as $elDestino){
            $result = mail($elDestino, $this->asuntos, $this->cuerpos, "From: {$this->remitente}\r\n");
            if ($result) echo "Su e-mail se ha conseguido enviar satisfactoriamente para {$elDestino}<br />";
        }
    }
}
  • En este script hemos creado la class 'EnviaMail' que como vemos contiene 4 atributos privates y 3 métodos de acceso a estos.
  • Finalmente hay un método que realiza el envío de E-mails a los destinatarios.
  • Todo bien, pero como lo utilizamos?
  • En el siguiente archivo veremos eso!
Segundo Paso: Como segundo paso creamos en nuestra carpeta principal el archivo index.php que realizará el requerimiento require del archivo anteriormente creado 'EnviaMail.class.php', para poder acceder a la class en este contenida EnviaMail.
  • Este código hace el instanciamiento de la class EnviaMail y pasa $elremitente del E-mail a través del método __construct.
  • Luego usa el método 'agregaDestino' para agregar $eldestino del e-mail,
  • Usa el método setAsunto para pasar por él, $elAsunto del E-mail.
  • Usa por último el método setCuerpo para agregar $elCuerpo del mensaje; osea el contenido del mensaje que queremos enviar a través del e-mail.

Archivo index.php


<?php
/**
 * Author: MiSCapu
 * Date: 21/04/2017
 * Time: 23:31
 */
/**
 * Accedemos al archivo EnviaMail que contiene la classe del mismo nombre.
*/
require 'Controladores/EnviaMail.php';
/**
 * Utilizo el namespace MiSCapu y la class EnviaMail
*/
use MiSCapu\EnviaMail as EnviaMail;
/**
 * Creamos el objeto $emailer que instancia a la class EnviaMail para
 * realizar el proceso de envío de un e-mail
*/
    /**
     * Iniciamos el objeto
    */
    $emailer = new EnviaMail('miguelonsinho5@gmail.com');  //método __construct
    /**
     * Utilizamos el objeto $emailer con el método agregaDestino
    */
    $emailer->agregaDestino('mignan2010@hotmail.com');     //accesando métodos
    /**
     * Utilizamos el objeto $emailer con el método SetAsunto
    */
    $emailer->setAsunto('Sólo un Teste');
    /**
     * Utilizamos el objeto $emailer con el método setCuerpo
    */
    $emailer->setCuerpo('Hola MiSCapu, como esta todo ahí?');
    $emailer->enviaMail();
  • Si hemos codificado de manera correcta todos estos archivos e integrado nuestros datos de acceso a MySQL; 
  • Al accesar nuestro archivo index.php; obtendremos en nuestro navegador el siguiente panorama:
Bueno con esto culminamos un artículo donde explico paso a paso la creación de una simple Class llamada EnviaMail que como su nombre lo aclara; realiza el envío de un Email; todo esto utilizando el paradigma de Orientación de Objetos del Lenguaje PHP!
Compartir:
Localización Gov. Celso Ramos, SC, Brasil

Aplicativo PHP

PDO

PHP

PHP y MySQL

SystemRegPHP

Déjenos su Comentário:

2 comments:

  1. Para esto devo tener instalado previamente dendMail?

    ResponderBorrar
    Respuestas
    1. Hola Edgar,
      No necesitas tener instalado SendMail ya que en el script se esta construyendo paso a paso todo. Es un script totalmente funcional.

      Borrar