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
A modo de mejora comento 2 cositas 😛
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 😛 y… otra cosa es que el link a code purity no funciona 😮
Saludos Bline
Gracias por la aclaración y esta corregido el link 🙂
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 😉
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):
como sería para incluir la validacion dentro de la clase misma a la que pertenece el email, por ejemplo dentro de la clase usuario
Gracias