Ciao, serve per chiamare metodi di una classe senza creare un'istanza della classe stessa. Tipicamente vengono utilizzati per chiamare metodi dichiarati statici, ma non solo. Un classico esempio è quando un classe figlia nel proprio costruttore costruisce anche la classe padre:
Codice PHP:
class figlia extends padre{
function __construct() {
parent::__construct()
}
}
oppure ad esempio in una classe che si occupa della connessione a DB:
Codice PHP:
class Db {
public static function getConnection() {
static $hDB;
if(isset($hDB)) return $hDB;
$hDB = mysql_connect(HOST, USER, PWD) or die("Impossibile connettersi al DB");
$link = mysql_select_db(DBNAME) or die('impossibile selezionare il DB');
return $hDB
}
}
Le altre classi che vogliano utilizzare la connessione al DB non devono creare un'istanza della classe DB, ma possono richiamare il metodo getConnection tramite l'operatore ::
Codice PHP:
// get db connection
$connection = Db::getConnection
Infatti una classe di quel tipo va bene che sia utilizzata in quella maniera, siccome non c'è nessuna necessità di istanziare un oggetto della classe, siccome tutti quanti gli oggetti istanziati avrebbero le stesse identiche caratteristiche.