Ciao..
Se vuoi un metodo semi alternativo, puoi provare a creare una classe singleton...
Singleton significa che può esserci una sola istanza nella tua applicazione...
Ti riporto un esempio..
Codice PHP:
<?php
class Singleton {
/**
* attributo statico "Istanza della classe"
*/
private static $instance;
/**
* il mio counter
*/
private $counter;
/**
* costruttore di classe PRIVATO
*/
private function __construct() {
$this->counter = 0;
}
/**
* funzione che richiama l'istanza della classe
*/
public static function getInstance(){
//controllo se non è definita l'istanza
if(Singleton::$instance == null) {
//creo l'istanza
Singleton::$instance = new Singleton();
}
//ritorno l'istanza
return Singleton::$instance;
}
/**
* funzione di incremento
*/
public function increaseCounter(){
$this->counter++;
}
/**
* Getter
*/
public function getCounter(){
return $this->counter;
}
/**
* Setter
*/
public function setCounter($counter){
$this->counter = $counter;
}
}
Dove mi serve posso richiamare la classe in questo modo..
Anche all'interno di dichiarazione di funzioni..
Codice PHP:
$sing = Singleton::getInstance();
$sing->increaseCounter();
echo "il counter vale : " . $sing->getCounter();
function incrementaSingleton(){
$singeltonVariabileLocale = Singleton::getInstance();
$singeltonVariabileLocale->increaseCounter();
}
incrementaSingleton();
echo "
ora il counter vale : " . $sing->getCounter();
######## OUTPUT ##########
il counter vale : 1
ora il counter vale : 2
# #######################
Cosi implementata la singleton permette di avere la stessa istanza ovunque a ogni chiamata di pagina (PHP reinizializza tutto a ogni nuova richiesta).. Andando a modificare il metodo getInstance si può però tenere la vibilità di sessione o addirittura di applicazione usando le variabili speciali...
Esempio
Codice PHP:
<?php
session_start();
class Singleton {
......
/**
* funzione che richiama l'istanza della classe
*/
public static function getInstance(){
//controllo se non è definita l'istanza
if(Singleton::$instance == null) {
//creo l'istanza
if($_SESSION['Singleton'] == null){
Singleton::$instance = new Singleton();
$_SESSION['Singleton'] = Singleton::$instance;
}
Singleton::$instance = $_SESSION['Singleton'];
}
//ritorno l'istanza
return Singleton::$instance;
}
...
}
Questo tipo ti classi sono molto comode per scrivere codice più pulito senza usare variabili globali importate con global etcc...
Trovi anche una guida su questo sito se non erro..
Ciaooo