Souci de ré-écriture d'un script et remplacement d'une boucle FOR par un FOREACH où j'ai un souci...
Voici le message PHP
Et le coding ou la partie A est remplacée par B
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [04-Aug-2012 10:15:30] PHP 2. user_error() F:\WebSites\t1\index.php:218 [04-Aug-2012 10:15:30] PHP Catchable fatal error: Object of class String could not be converted to string in F:\WebSites\t1\index.php on line 75 [04-Aug-2012 10:15:30] PHP Stack trace:
Le print_r donne ceci!
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 print("Form Validate[".$i."/".count($this->form)."]" . CRLF) ; print_r($this->form) ; PARTIE B foreach($this->form as $key => $value) 75 ==> { echo "Key: $key; Value: $value<br />\n"; // print("Form Validate[".$key."/".$value."]" . CRLF) ; // $this->form[$i]->validateField() ; } /*1 PARTIE A for($i = 0 ; $i < $this->cnt ; $i++) { print("Form Validate[".$i."/".$this->cnt."]" . CRLF) ; $this->form[$i]->validateField() ; } */
Ce qui signifie pour moi que les 2 objets sont bien là (Form Validate[0/2] mais que leurs propriétés sont PRIVATES
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Form Validate[0/2] Array ( [0] => String Object ( [fldName:String:private] => prenom [fldMust:String:private] => MUST [fldType:String:private] => [fldError:String:private] => [fldMinl:String:private] => [fldMaxl:String:private] => ) [1] => String Object ( [fldName:String:private] => nom [fldMust:String:private] => MUST [fldType:String:private] => [fldError:String:private] => [fldMinl:String:private] => [fldMaxl:String:private] => ) )
Est ce mon problème ?
J'ai remplacé le PRIVATE par PROTECTED dans le constucteur de la class STRING mais cela ne change rien...
Merci de m'éclairer....
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
35
36
37
38
39
40
41
42
43 class String //1 implements MethodList { protected $fldName, $fldMust, $fldType, $fldError, $fldMinl, $fldMaxl ; function __construct($fldName, $fldMust, $fldType, $fldError, $fldMinl, $fldMaxl) { $this->fldName = $fldName ; $this->fldMust = $fldMust ; $this->fldName = $fldName ; $this->fldName = $fldName ; $this->fldName = $fldName ; $this->fldName = $fldName ; print("String[__construct][$fldName]" . CRLF ) ; } /** * STRING: initField * */ function initField() { print("String[initField]" . CRLF) ; } /** * FORM: validateField * */ function validateField() { $val = true ; print("String[validateField]" . CRLF) ; return($val) ; } /** * STRING: isFilled * */ function isFilled() { $fi = (isset( $_POST["$this->fldName"] ) AND ($_POST["$this->fldName"] != NULL) ); print("String[isFilled][$fi]" . CRLF) ; return( $fi ) ; } }
Bon WE
J'ai effectué un changement qui m'interpelle car me confond...
La boucle fonctionne mais plus le PRINT_T
Ce qui donne pour les prints:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 print_r($this->form . CRLF) ; foreach($this->form as $key => $value) { echo "Key: $key<br />\n"; // print("Form Validate[".$key."/".$value."]" . CRLF) ; // $this->form[$i]->validateField() ; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Form Validate[0/2] Array <== PLUS RIEN ICI Key: 0 Key: 1 FORM OK
Partager