[POO] [Introspection] exécuter une méthode
Bonjour,
j'ai commencé à écrire une classe assez simple et dans une des méthodes je voudrais pouvoir faire éxecuter des autres méthodes de façon dynamique.
Voici une partie de la classe en question:
Code:
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 59 60 61 62 63
| <?php
class InscriptionModel {
private $results;
private $errors;
public function __construct() {
$this->initResults();
$this->initErrors();
}
public function check() {
foreach($this->errors as $key => $value) {
if(!$value) {
///echo $key.'<br />';
$fct = new ReflectionMethod('isValidPseudo');
$fct->invoke();
}
}
}
private function initResults() {
$this->results = array("isValidPseudo" => "",
"isExistingPseudo" => "",
"isValidPassword" => "",
"isSamePassword" => "",
"isValidEmail" => "",
"isSameEmail" => "",
"isExistingEmail" => "",
"isCorrectSex" => "",
"isValidBirthday" => "",
"isValidDepartement" => "",
"isAcceptedPolicy" => "",
"isAcceptedCGU" => "",
"isMajor" => "");
}
private function initErrors() {
$this->errors = array("isValidPseudo" => false,
"isExistingPseudo" => false,
"isValidPassword" => false,
"isSamePassword" => false,
"isValidEmail" => false,
"isSameEmail" => false,
"isExistingEmail" => false,
"isCorrectSex" => false,
"isValidBirthday" => false,
"isValidDepartement" => false,
"isAcceptedPolicy" => false,
"isAcceptedCGU" => false,
"isMajor" => false);
}
private function isValidPseudo() {
echo 'isValidPseudo<br />';
/****************************************************
* vérification de la validité du pseudo *
* **************************************************/
}
}
?> |
Tout se passe dans la méthode check().
Je souhaite appeler les diverses méthodes de la classe selon les valeurs du tableau $errors.
Dans le code que je poste, j'ai mis en dur le nom de la méthode que je veux appeler, mais que je la mette comme ça, ou en utilisant la valeur $key, ça ne marche pas.
J'ai le message suivant dans le navigateur :
Citation:
Fatal error: Uncaught exception 'ReflectionException' with message 'Invalid method name isValidPseudo' in D:\Dev_Web\nm1\app\models\InscriptionModel.php:17 Stack trace: #0 D:\Dev_Web\nm1\app\models\InscriptionModel.php(17): ReflectionMethod->__construct('isValidPseudo') #1 D:\Dev_Web\nm1\www\index.php(4): InscriptionModel->check() #2 {main} thrown in D:\Dev_Web\nm1\app\models\InscriptionModel.php on line 17
Je suis preneur de toute idée, parceque là, je coince.
Merci d'avance.