Ver Mensaje Individual
  #5 (permalink)  
Antiguo 01/02/2010, 01:27
Avatar de MaBoRaK
MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
Respuesta: Como funcionan los sistemas de plugins de softwares diseñados en php?

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.
__________________

Maborak Technologies