Bonjour,
J'avais un souci dans une succession de classe Form => Validator, souci justifié par le fait que j'avais les propriétés:
Définies au niveau Form mais calculées au niveau enfant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 private $cntField = 0 ; private $cntFilled = 0 ; private $stillFill = 0 ;
J'ai résolu mon problème en n'en faisant qu'une seule classe de 324 lignes ???? , ce qui va dans le sens contraire de la philosophie OOP.
Ces 3 propriétés sont utilisées pour le diagnostic de la Form et le message en bas de celle-ci !
Sont calculées au niveau enfant (ex classe Validator)
Code : 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 function getMsg() // Public car function appelée du formulaire... { // // affichage du message inférieur // ============================== if ($this->debug) user_error("getMsg[".$this->cntFilled."][".$this->cntField."][".$this->stillFill."]" , E_USER_NOTICE) ; if ($this->isFormValid() ) { if ($this->cntFilled) if ($this->stillFill) $this->msg = STILL ; else $this->msg = OK ; else $this->msg = VIDE ; } else { if ($this->cntFilled) if ($this->stillFill) $this->msg = STILL ; else $this->msg = KO ; else $this->msg = VIDE ; } return( $this->tabMsg[$this->msg] ) ; }
Or ma(s) classe(s) doive(ent) encore subir des extensions... ce qui va en faire un monstre inmaintenable si je les conserve d'une seule pièce !
Code : 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 switch( $this->form[$i][self::Clas] ) { case STRING : if ($this->ifFilled() ) if ($this->ifLength() ) return ( $this->valDatatype() ) ; else return ( $this->mustFill() ) ; break ; // // bla bla bla // /** * ifFilled * */ function ifFilled() { if ($rc = ($this->value != NULL) == true) $this->cntFilled++ ; return( (bool) $rc ) ; } /** * mustFill * */ function mustFill() { if ($this->must) { $this->msg = "Le champ[".$this->name."] doit être encodé !" ; $this->stackMessage($this->msg) ; $this->stillFill++ ; } return( (bool) $this->must) ; }
J'en appelle à vous pour me montrer la bonne marche à suivre pour organiser les classes selon le modèle OOP de PHP5 !
Je vous mets la source en pièce attachée !
Merci à vous tous
Partager