Aller au contenu

Comment détecter qu'un new échoue car la classe n'existe pas ?


Sujets conseillés

Posté

Bonjour,



J'ai un programme de ce genre



$lst = array('coucou', 'truc');

foreach($lst as $pname){
$probe = new $pname();
}

sauf que les classes ne sont pas forcément définies et sont chargés dynamiquement par un include par spl_autoload_register().



Mais ici aussi, l'include qui en résulte peu échouer : ce sont des sondes pour un outils de monitoring, et je ne veux pas qu'il échoue uniquement car il reçoit un type de donner auquel il ne s'attend pas. Dans ce cas, il ignore simplement les données.



En d'autre terme, je cherche a faire



$probe = new $pname() or continue();

syntaxe qui ne fonctionne pas car <b>Fatal error</b>: Class 'truc' not found.



Une idée?


Posté

Bon, j'ai trouvé : class_exists() fonctionne parfaitement avec spl_autoload_register() donc ça marche super.




function load_probe($probename){
@include_once('Domestik/Probes/'. $probename .'.inc');
}

...

foreach($dt as $stp => $sample){

$pname = "probe_$stp";
if(!class_exists($pname)){
echo "*I* No support class for $stp\n";
continue;
}
$probe = new $pname($dt['timestamp'], $sample);
}


Je laisse le sujet des fois que ça puisse aider qq'un.


Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...