Aller au contenu
destroyedlolo

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

Noter ce sujet :

Recommended Posts

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?


Partager ce message


Lien à poster
Partager sur d’autres sites

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.


Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×