Bonjour,
J'ai un petit soucis de choix a faire et ma connaissance de strater me pousse a vous demander votre avis.
J'ai créé une classe qui va etre utiliser pour faire les validations de champs dans le cadre d'un formulaire.
Dans ma classe j'ai plusieur fonctions dont voici un "extrait"
J'ai une autre classe qui va hériter de cette dernière, et qui va elle définir un champs field
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 class Check{ private $call_NoData; public function Security($data){ $data = trim(strip_tags($data)); //Remove all html and php code return $data; } public function RemoveAccent($string,$charset='utf-8'){ $string = htmlentities($string, ENT_NOQUOTES, $charset); $string = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $string); $string = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $string); // pour les ligatures e.g. 'œ' $string = preg_replace('#\&[^;]+\;#', '', $string); // supprime les autres caractères return $string; } public function NoData($name,$val){ if(empty($val)) { $error = '<p class="f_error">Le champs <b>'.$name.'</b> ne doit pas êre vide.</p>'; $this->call_NoData = 1; }else{ $error =''; $this->call_NoData = 0; } return $error; } }
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 class Field extends Check{ private $accept; private $accesskey; private $align; private $alt; private $border; private $checked; private $dir; private $disabled; private $height; private $hspace; private $lang; private $maxlength; private $onblur; private $onchange; private $ondblclick; private $onfocus; private $onkeydown; private $onkeypress; private $onkeyup; private $onmousedown; private $onmousemove; private $onmouseout; private $onmouseover; private $onmouseup; private $onselect; private $readonly; private $size; private $src; private $style; private $tabindex; private $title; private $usemap; private $width; private $field; public function __construct($id,$name,$class,$value){ $this->field = '<input id="'.$id.'" name="'.$name.'" class="'.$class.'" value="'.$value.'" /><br />'; } public function __set($name, $value){ echo 'Defini '.$name.' a : '.$value.'<br />'; $this->$name=$value; } public function __get($name){ echo 'Affiche '.$name.' : '; return $this->$name; } public function Display(){ echo $this->field; } }
Pour faire la validation je fais ainsi et ca marche très bien:
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $nom = new Field('id_nom','nom','class',''); $nom->Display(); // -- ENVOI DU FORMULAIRE --// // -- RECUPERATION DES VALEUR --// (isset($_GET['nom'])) ? $f_nom = $_GET['nom'] : $f_nom = ''; $f_nom = $nom->Security($f_nom); $f_nom = $nom->RemoveAccent($f_nom); echo $nom->NoData('Firstname',$f_nom);
Simplement, aujourd'hui, j'ai lu qu'on pouvais utiliser des fonction static qui me permette d'appeler des fonctions sans instentier la classe...
Donc si j'ai bien compris je pourrais faire ainsi
et ma class Field, n'aurait plus besoin d'hériter de ma class Check.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 class Check{ private $call_NoData; static function Security($data){ $data = trim(strip_tags($data)); //Remove all html and php code return $data; } static function RemoveAccent($string,$charset='utf-8'){ $string = htmlentities($string, ENT_NOQUOTES, $charset); $string = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $string); $string = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $string); // pour les ligatures e.g. 'œ' $string = preg_replace('#\&[^;]+\;#', '', $string); // supprime les autres caractères return $string; } static function NoData($name,$val){ if(empty($val)) { $error = '<p class="f_error">Le champs <b>'.$name.'</b> ne doit pas êre vide.</p>'; $this->call_NoData = 1; }else{ $error =''; $this->call_NoData = 0; } return $error; } }
N'est-ce pas?
je pourrais donc , ensuite, faire ainsi:
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $nom = new Field('id_nom','nom','class',''); $nom->Display(); // -- ENVOI DU FORMULAIRE --// // -- RECUPERATION DES VALEUR --// (isset($_GET['nom'])) ? $f_nom = $_GET['nom'] : $f_nom = ''; $f_nom = Check::Security($f_nom); $f_nom = Check::RemoveAccent($f_nom); echo Check::NoData($f_nom);
Donc pourquoi utilirais-je l'héritage?
Partager