Spesso ho la necessità di utilizzare variabili SUPERGLOBALI per i miei script.
Per risolvere questo problema il PHP offre nativamente $GLOBALS e global.
Il primo è deprecato oltre al fatto che la direttiva register_globals di default è impostata su OFF in tutte le versioni di PHP successive alla 4.2.0.
Il secondo invece è un metodo abbastanza scomodo...

Ho pensato, quindi, di adottare uno stratagemma sfruttando la supeglobalità delle costanti.
L'idea è molto semplice: serializzare le variabili dentro una costante che sarà quindi disponibile ovunque.

ecco il codice:

Codice PHP:
function GL_exist(){
     
     
$a 0;
     
     while( 
defined('_zzz_'.($a+1)) ){
     
            
$a++;
     
     }

     return 
$a;

}


function 
GL_set($arr_var){
    
    
$a GL_exist();
    
    if( 
defined('_zzz_0') ){
    
         
$memo unserialize(constant("_zzz_$a"));
    
         foreach(
$arr_var as $k => $val$memo[$k] = $val;
    
         
define('_zzz_'.($a+1),serialize($memo));
    
    }else{
    
         
define('_zzz_0',serialize($arr_var));
    
    }

}


function 
GL_get(){

    
$a GL_exist();
    
        return 
unserialize(constant("_zzz_$a"));
    

che richiamo in questo modo:

Codice PHP:

# setto le variabili globali
$array_z['pron'] = array('mio','tuo','suo');
GL_set($array_z);
   
function 
prova(){
      
      
#richiamo le variabili globali
      
$GL GL_get();
      
      
#corpo della mia funzione
      
echo $GL['pron'][0];
      
}
prova(); # stamperà: mio
   
#se ho la necessità posso aggiornare il valore delle variabili globali  
$array_z['pron'] = array('nostro','vostro','loro');
GL_set($array_z);
   
function 
prova2(){
        
        
$GL GL_get();
        echo 
$GL['pron'][0];
}
   
prova2(); # stamperà: nostro 
Ecco come funziona: con GL_set() memorizzo le mie variabili che leggo tramite GL_get().

Per avere disponibili all'interno della mia funzione tutte le variabili globali mi basta richiamare la funzione GL_get().


LIMITI:
Il principale limite di questo metodo sta nell'impossibilità di poter ridefinire o distruggere una costante e ciò implica di dover eseguire il controllo GL_exist() ed una maggior spreco di memoria a causa delle costanti già definite e che non riutilizzo.
Inoltre ciò obbliga a dover utilizzare una funzione per leggere la mia costante.

Mi farebbe piacere sapere cosa ne pensate, soprattutto i GURU di questo forum che sanno vedere lì dove io non riesco.... (mamma mia che frase )