Validación de correo electronico y dirección IP (POO)

Mediante expresiones regulares podemos crear una funciones que nos valide correos electrónicos y direcciones IP con el formato adecuado, anteriormente vimos algo similar. Pero si nos gusta programar siempre orientado a objetos, lo cual nos ayuda a reutilizar nuestro código, además de otras ventajas ... ¿cómo podemos hacer? Veamos un ejemplo:

De este par de funciones:

function ip_is_valid($ip)
{
return (!preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)) ? false : true;
}
function email_is_valid($email)
{
return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)) ? false : true;
}

Pasando a programación orientado a objetos sería de esta forma:

<?php
class validation
{
public function __construct()
{
//todo
}

public function __destruct()
{
//todo
}

public function ip_is_valid($ip)
{
return (!preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)) ? false : true;
}

public function email_is_valid($email)
{
return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)) ? false : true;
}
}
?>

Ahora podemos llamar a nuestra clase en diferentes aplicaciones:

<?php
require('validacion.class.php');
$objeto=new validation;

if( $objeto->email_is_valid('billy_jean345@gmail.com') ) echo "good";
else echo "false";
?>

¿Interesante verdad? Por supuesto, que existen muchas formas de implementar la validación con clases, está es una forma. Espero les sirva este código.

Vía Code Purity

Comentarios Comentarios formato RSS

  1. avatar Abel 2008-10-09 23:23:58 4 Si es muy buena práctica usar POO, pero para esta clase de tonterias lo mejor (100% mejor) es usar las funciones nativas de PHP (ahorramos tiempo de ejecución y memoria):

    <?php
    if( filter_var('roberto@example.com', FILTER_VALIDATE_EMAIL)){
    echo 'good';
    }

    else {
    echo 'false';
    }
    ?>
  2. avatar Pablo Morales 2008-10-09 18:01:08 3 Otro punto es la necesidad de instanciar la clase, el metodo podria ser estatico, y para validarlo.

    if( Validation::email_is_valid()){
    }

    Otra cosa, es que las clases tienen que usar el sistema de CamelCase, pero eso lo dice Zend ;)
  3. avatar jesusvld 2008-10-09 17:48:54 2 Gracias por la aclaración y esta corregido el link :)
  4. avatar Bline 2008-10-09 16:57:53 1 A modo de mejora comento 2 cositas :P
    Si se esta trabajando como objeto, dudo que a una clase externa a validation le importe mucho el rango de IP y email, de modo que yo pondria esos metodos como privados o protected, si no en el el paradigma de la orientacion a objetos tal y como la conocemos de lenguajes anteriores (c++ y demas) no habria valido para nada :P y... otra cosa es que el link a code purity no funciona :o

    Saludos Bline

Dejar un comentario