2012-12-05 4 views
0

J'ai une fonction "isValid" qui est responsable de la recherche d'espaces dans toutes les variables fournies. Je veux que la fonction retourne vrai si aucune des variables ne contient d'espaces. Serait-ce la bonne approche?Retour des valeurs vraies pour les espaces dans les variables

return !(strpos($this->email, " ") || strpos($this->confirm_password1, " ") || strpos($this->handle, " ") || strpos($this->phone, " ")); 
+0

Cette ce serait un bon moment pour étudier les tests unitaires et phpunit. – Marvo

+0

Le manuel indique clairement, dans une grande boîte rouge: "Utilisez l'opérateur === pour tester la valeur de retour de cette fonction" – GarethL

+0

Ai-je manqué quelque chose ici. Qu'est-ce que OP a à faire avec les tests unitaires? @marvo – PeeHaa

Répondre

2

Afin qu'il soit facilement maintenable je ferais quelque chose comme ce qui suit:

public function isValid() 
{ 
    $properties = array(
     'email', 
     'confirm_password1', 
     'handle', 
     'phone', 
    ); 

    foreach ($properties as $property) { 
     if ($this->containsSpace($property)) { 
      return false; 
     } 
    } 

    return true; 
} 

private function containsSpace($property) 
{ 
    return !(strpos($this->$property, '') === false); 
} 

Notez le === false as check for strpos(). Démonstration: http://codepad.viper-7.com/0ZgNZq.

Notez que cela ne vérifie que les espaces et pas les autres espaces possibles. Si vous voulez vérifier les autres caractères blancs Je suggère d'utiliser un simple regex:

private function containsSpace($property) 
{ 
    return (bool)preg_match('/\s/', $this->$property); 
} 

Et enfin, si vous voulez vraiment le faire à votre façon originale que je ferais quelque chose comme:

public function isValid() 
{ 
    return strpos($this->email, " ") === false && strpos($this->confirm_password1, " ") === false && strpos($this->handle, " ") === false && strpos($this->phone, " ") === false; 
} 
+0

Quels autres caractères d'espaces pensez-vous qu'il y a? –

+0

Je n'ai aucune idée d'où proviennent les données ou ce qu'elles contiennent, donc il me serait impossible de vous le dire :) – PeeHaa

1
function isValid($var) { 
    if (strpos($var, ' ') === false) { 
    // Does not contain a space character. 
    return true; 
    } 
    return false; 
} 
1
return (strpos($this->email, " ") === false && strpos($this->confirm_password1, " ") === false && strpos($this->handle, " ") === false && strpos($this->phone, " ") === false) 

mais cela rend le code assez illisible ...

Questions connexes