loading.............
  
El principal punto que debes entender es: 
Para tener un sistema de plugins debes tener todo tu sistema enlazado, conectado o la palabra que se use para "que todo esté unido", de esta forma puedes acceder a cualquier dato del sistema desde cualquier punto. 
Con esto te digo por ejemplo esta estructura: 
plugins/
plugins/plugin1.php 
Entonces tu sistema debe ser capaz de acceder a la información de tu plugin, por ejemplo tu plugin1.php puede ser  
 Código PHP:
    /*
este plugin hace algo a los usuarios
*/
class Plugin_plugin1 extends Plugin
{
   
     public function info()
     {
            return array('version'=>3,'by'=>'blablabla')
     }
     public function algo()
     {
             $db=Db::Singleton();
             $db=$this->db;
             $users=User::Singleton();
             $list= $users->list();
             foreach($list as $k=>$v)
             {
                   $email=$v['email'];
                   //blablablablablabla
             } 
             //etc
     }
     //usado por ejemplo para instalar este plugin o desinstalar
     public function arch()
     {
             $data=array();
             $data['tablas']=array("tabla1"=>"uid int(); blabla ","tabla2"=>"uid INT() blabla")
             return $data;
     }
} 
    
  como vez ahí el plugin es una extensión del sistema con acceso a todas las herramientas de la misma. Creo que es así como se debe hacer. 
Tambien existe otro método para registrar/usar un plugin..mmm.. similar a la de wordpress  
 Código PHP:
    /**
 * Initialise the internationalisation domain
 */
$is_mailusers_i18n_setup = false;
function mailusers_init_i18n() {
    global $is_mailusers_i18n_setup;
    if ($is_mailusers_i18n_setup == false) {
        load_plugin_textdomain(MAILUSERS_I18N_DOMAIN, 'wp-content/plugins/email-users');
        $is_mailusers_i18n_setup = true;
    }
}
/**
 * Set default values for the options (check against the version)
 */
add_action('activate_email-users/email-users.php','mailusers_plugin_activation');
// etc etc etc
} 
    
  Acá se lee el plugin y se registra en la base de datos. La próxima vez que sea este plugin y la base de datos devuelva que ya está registrado (por eso los plugins tienen nombres únicos) se salta estos pasos y se sigue a ejecutar alguna función del plugin. 
Creo que aprender un par de patrones, SINGLETON y REGISTRY es todo lo que necesitas:  
http://www.phppatterns.com/docs/design/the_registry 
saludos.  
connection closed.