Ich hab für

ein Plugin System erstellt, das alle PHP Dateien in einem Ordner öffnet und die darin enthaltene Klasse (mit gleichem Namen wie die Datei) lädt. Das Plugin muss ein paar Informationen beinhalten (Author, Version,...). Ein Plugin kann mit dem System durch Callbacks von Seiten des Systems interagieren. Beim Aufruf werden dann ein paar Parameter mitgegeben. Das System prüft vorher, ob die entsprechende Methode im Plugin vorhanden ist.
Ich finde diesen Ansatz sehr angenehm zum arbeiten.
Wahlweise wäre auch möglich, die Callbacks im Constructor des Plugins im System zu "registrieren".
Beispiel:
PHP Code:
// SHPS
public static function login($user = '', $pass = '', $autologin = false)
{
// ...
return SHPS_pluginEngine::callEvent('onLogin', '', $rd[$tbl->getFullName()]);
// ...
}
PHP Code:
// Plugin
/**
* Event called after successful login
*
* @param array $param Contains all system information about the user from DB
* @param mixed $queue Contains 'autoLogin' if the user was logged in automatically
* @return boolean Return true if login should be successful
*/
public function onLogin(&$param = NULL, &$queue = '')
{
return true;
}