Bonjour,

Est-il possible de faire un foreach sur un objet retourné dans le constructeur ?

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
 
class Functions {
 
private $func = []; 
 
public function __construct() { 
 $this->fonctions_a_appeler(); 
}
 
public function fonctions_a_appeler() {
 $this-> addFunction (['isRequired', 'isAlphaM']);
}
 
public function addFunction (array $functions=[]) { 
 $this->func = $functions;
}
 
public function getField() {
 return $this->func; 
}
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
class Valid {
 
private $post = []; 
private $func = []; //'isRequired', 'isAlphaM'
 
public function __construct ($post,$ofunctions) { //
 var_dump($this->post = $post); 
 var_dump($this->func = $ofunctions); 
}
 
static function isRequired($value){
 if(!empty(trim($value))) {
  echo 'OK pour required : ' .$value. '<br><br>';
 } else {
  echo ' required KO <br><br>';
 return false;
 }
}
 
static function isAlphaM($value){
 if (!preg_match('/^[A-Z\'-_]{2,30}$/', $value)) {
  echo 'Alpha Majucule KO : ' .$value. '<br><br>' ; 
  return false;
 } else {
  echo 'OK Alpha : ' .$value. '<br><br>';
 }
}
 
public function getPost() {
 return $this->post; 
}
 
public function getFunction() {
 return $this->func; 
}
 
public function test(){
 foreach ($this->getPost() as $name => $value) {
  foreach ($this->getFunction() as $rules => $rule) {
   echo 'test des foreach'; 
   //call_user_func_array(array($this, $rule), array($value));
  //}  
 }
}
 
}
 
$functions = new Functions(); 
//var_dump($functions); 
 
$valid = new Valid ($_POST, $functions); // je passe le post et l'objet Functions dans le constructeur 
//var_dump($valid); 
//var_dump($valid->getPost()); 
//var_dump($valid->getFunction());
 
$valid->test();
j'aimerai déjà réussir à faire apparaître le 'echo : test des foreach '. Il n'y a pas de message d'erreurs mais rien ne s'affiche....
Le écho apparaît lorsque je mets les appels des méthodes directement dans la propriété privée
private $func = ['isRequired', 'isAlphaM'];

Pb :
peut-on faire passer un objet dans un constructeur d'une autre class
comment réussir ma boucle sur mon objet
faire appel call user func array pour appeler mes fonctions via mon objet

merci pour vos retours






Merci pour vos retours