Gescheites Plugin System?

12/15/2013 19:22 IchVerabschiedeMich#1
Hey Leute,

ich habe vor mit einem Freund ein System zu schreiben und wollte fragen ob ihr Ideen für ein Plugin System habt.

Es geht mir hierbei nicht nur um ein einfaches Funktion Hooking.

@Edit:
Tut mir leid, meinte für PHP ;)

Gruß,
Padrio
12/15/2013 19:51 マルコ#2
Ich hab für [Only registered and activated users can see links. Click Here To Register...] 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;
    } 
12/15/2013 19:54 IchVerabschiedeMich#3
Quote:
Originally Posted by マルコ View Post
Ich hab für SHPS 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;
    } 
Ist das nicht auch in etwa ein "einfaches" Funktion Hooking?

@Edit:
Jetzt merke ich was genau du meintest, Theoretisch ist das nen nettes System :o
12/16/2013 17:32 MrSm!th#4
#moved