gestire il plugin con delle funzioni e delle classi?
i file del plugin richiamerebbero le funzioni nella classe.
Codice PHP:
<?
class Plugins{
var $events=array();
function addEventListener($evt,$f,$d='none'){
if(!isset($this->events[$evt])){
$this->events[$evt]=array();
}
array_push($this->events[$evt],array($f,$d));
}
function newEvent($evt,$data='none'){
if(isset($this->events[$evt])){
$e=$this->events[$evt];
}else{
$e=array();
}
foreach($e as $event){
call_user_func($event[0],$data,$event[1]);
}
}
function loadPlugins(){
if(is_array(glob(PATH."plugins/*/main.plugin.php"))){
foreach(glob(PATH."plugins/*/main.plugin.php") as $file){
include($file);
}
}
}
}
?>
il file del plugin:
Codice PHP:
<?
$this->numbers=0;
function _plugin_prova_init($mcms_data,$func_data){
global $_P;
$_P->numbers++;
echo "Volte:".$_P->numbers."<br/>";
}
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
$this->addEventListener('cms_start','_plugin_prova_init');
// Tutte le volte che voglio xD
all'inizio di ogni pagina:
Codice PHP:
<?
$_P=new Plugins;
$_P->loadPlugins();
$_P->newEvent('cms_start');
?>
questa è roba del mio CMS, quindi :P