je cherche à développer une classe "Personne" qui crée des personnes avec un nom et un prénom. Je voudrais effectuer des controles sur les chaines de caractères entrées par l'utilisateur.
Pour l'instant, j'ai le code suivant :
Code : Tout sélectionner
<?php
class Personne {
private $nom;
private $prenom;
public function __construct($nom, $prenom) {
if ($this->verifieChaine($nom)) {
$this->nom = $nom;}
else{die('Le nom n est pas valide');}
if ($this->verifieChaine($prenom)) {
$this->prenom = $prenom;}
else{die('Le prenom n est pas valide');}
}
public function __tostring() {
return "Je suis $this->prenom $this->nom !";
}
public function afficheToi() {
print $this->__tostring();
}
public function getNom() {
return $this->nom;
}
public function getPrenom() {
return $this->prenom;
}
private function contientDesCaracteresAdmis($chaine) {
$ok = false;
$caracteresAdmis = 'aäàâbcdeëèéêfghiïîjklmnoöôpqrstuûùvwxyz';
for ($index = 1; $index <= strlen($chaine); $index++) {
if (strcspn ($caracteresAdmis, $chaine{$index}) == strlen($caracteresAdmis)) {
echo 'juste';
} else {
echo 'faux';
}
}
return $ok;
}
private function commenceParMajuscule($chaine) {
$ok = false;
if ($chaine != null && strlen($chaine)>=1) {
$ok = ($chaine{0} >= 'A' && $chaine{0} <= 'Z');
}
return $ok;
}
private function verifieChaine($chaine) {
$ok = false;
if ($chaine != null) {
$ok = $this->commenceParMajuscule($chaine);
if ($ok && strlen($chaine)>=2)
$ok = $this->contientDesCaracteresAdmis($chaine);
}
return $ok;
}
}
?>- Commence par une majuscule
- Contient des caractères admis
- Valide la chaine si les deux étapes précedentes fonctionnent
Or, avec le code que j'ai écrit, il n'y a que la vérification de la majuscule qui fonctionne.
Quand je vérifie les caractères admis, j'ai "fauxfauxfaux..." comme réponse.
Pour tester la classe Personne, j'utilise ce code :
Code : Tout sélectionner
<?php
require_once('classes.php');
$personne = new Personne(Stehlin, Alex);
$personne->afficheToi();
?>Merci d'avance !