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
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:
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
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() ;
				}		
*/
Le print_r donne ceci!
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] => ) )
Ce qui signifie pour moi que les 2 objets sont bien là (Form Validate[0/2] mais que leurs propriétés sont PRIVATES
Est ce mon problème ?

J'ai remplacé le PRIVATE par PROTECTED dans le constucteur de la class STRING mais cela ne change rien...
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 ) ; 
			}
		}
Merci de m'éclairer....
Bon WE

J'ai effectué un changement qui m'interpelle car me confond...
La boucle fonctionne mais plus le PRINT_T

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() ;
				}
Ce qui donne pour les prints:
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