Décharger classe dynamique en PHP

J'ai mis en place le chargement dynamique des plugins de la manière suivante:

function processPlugin( $plgFile, $db ) {
  require_once( $plgFile );
  $plgin = new PlginImpl();
  $plgin->setDb($db);
  $ret = $plgin->process();
  return $ret;
}

Chaque plugin définit une classe nommée PlginImpl, qui fonctionne très bien. Mais il devrait être possible de convoquer d'autres plugins spécifié dans l'intérieur de la valeur de retour de process(). Qui ferait la même méthode indiquée ci-dessus, mais échoue avec:

Fatal error: Cannot redeclare class PlginImpl in ..

Veuillez noter que chaque plugin est une classe, c'est à dire:

class PlginImpl extends Plugin implements PluginInterface

Plugin offre quelques fonctions utiles tout en PluginInterface définit c'est à dire process().

Je suppose que le fait que tous les plugins sont nommés PlginImpl les causes du problème, d'où ma question: est-il un moyen de décharger une classe (PlginImpl) après le chargement avec require_once? Ou est-il une approche totalement différente, je devrais suivre?


MODIFIER
J'ai essayé sans réussir les choses suivantes:

  • unset $plgin après process()
  • appel __destruct() - il n'a pas de travail ni dans processPlugin() ni dans les process méthode
InformationsquelleAutor MrG | 2009-07-23