Dank. Ich hab das jetzt wie folgt gelöst:
class app {
protected static $loaded_plugins = array();
protected static $queue = array();
public function load ($str) {
if(!isset(self::$loaded_plugins[$str]) && !in_array($str,self::$queue)) {
$class = 'plugin_'.$str;
self::$loaded_plugins[$str] = new $class();
}
}
public function loaded () {
return self::$loaded_plugins;
}
}
class plugin extends app {
protected $required_plugins = array();
public function __construct () {
parent::$queue[] = substr(get_class($this), strripos(get_class($this), '_') + 1); // name des plugins welches unprügnlich geladen werden sollte
foreach($this->required_plugins as $plugin)
$this->load($plugin);
parent::$queue = array();
}
public function __destruct () {
}
}