i metodi e proprietà statiche non appartengono a nessun oggetto in particolare, ma sono di fatto componenti statiche della classe stessa
essendo la proprietà ed il suo valore della classe non dell'oggetto questa puó essere utilizzata per portare valori da un oggetto all'altro

sintassi:
propietà: modificatore_accesso static $prorpietà = ...
metodo: modificatore_accesso static function nome_funzione($parametro 1, ...)


richiamare
non è possibile richiamare le proprietà statiche attraverso gli oggetti utilizzando ->
si utilizza operatore di risoluzione di scope :: (come per le costanti di classe)


per richiamare una propietà o metodo statico allinterno della stessa classe di usa self


esempio: proprietà statiche
class MiaClasse
{

// proprietà statiche
public static $mele = 10;
public static $pere = 20;
}

// stampa 10
echo MiaClasse::$mele;

// stampa 20
echo MiaClasse::$pere;

// genera errore
$miaClasse_1 = new MiaClasse();
echo $miaClasse_1->mele;;


esempio: utilizzo della propietà statica per passare valore tra oggetti
class MiaClasse
{

// proprietà statiche
public static $instances = 0;
public $idKey = false;

// costruttore
public function __construct()
{
$this->idKey = ++self::$instances; restituisce il valore statico di $instances aumentoto di 1
echo "Questo é #" . $this->idKey . " oggetto della classe MiaClasse. Oggetto creato: " . $this->idKey;
}

// distruttore
public function __destruct()
{
echo "Oggetto #" . $this->idKey . " cancellato.";
}
}

// stampa "Questo é #1 oggetto della classe MiaClasse. Oggetto creato: 1"
$miaMiaClasse_1 = new MiaClasse();

// stampa "Questo é #2 oggetto della classe MiaClasse. Oggetto creato: 2"
$miaMiaClasse_2 = new MiaClasse();

// stampa "Questo é #3 oggetto della classe MiaClasse. Oggetto creato: 3"
$miaMiaClasse_3 = new MiaClasse();


al termine dello script:
"Oggetto #1 cancellato."
"Oggetto #2 cancellato."
"Oggetto #3 cancellato."


esempio: metodo statico
class MiaClasse
{

// metodi statici
public static function sayHello()
{
echo "Hello!";
}

public static function sayHelloAgain()
{
self::sayHello();
echo " Again!";
}
}

// stampa "Hello!"
MiaClasse::sayHello();

// stampa "Hello! Again!"
MiaClasse::sayHelloAgain();