1.
PHP 4 consente l'accesso statico (cioè indipendente dalla creazione di un oggetto) ai metodi di una classe attraverso la sintassi nomeClasse::metodo().
Se hai letto qualcosa della programmazione a oggetti, sai che una volta creata la classe per utilizzarla la devi istanziare con una dichiarazione del genere:
codice:
$istanza = new miaClasse();
e per usarne poi i suoi metodi:
codice:
$istanza->metodo();
con la notazione di cui hai chiesto la spiegazione puoi saltare il primo passaggio.
2.
Per il secondo caso ti faccio un esempio (ancora più semplice di quello portato nel secondo link):
codice:
function scrivi_stringa($stringa){
$stringa = "Testo nella funzione ".$stringa;
echo $stringa."
";
}
Se tu chiami questa funzione cosi:
codice:
$stringa= "di prova";
scrivi_stringa($stringa);
echo $stringa;
otterrai 2 righe fatte cosi
codice:
Testo della funzione di prova
di prova
se invece chiamassi la funzione in questo modo:
codice:
$stringa= "di prova";
scrivi_stringa(&$stringa);
echo $stringa;
otterresti:
codice:
Testo della funzione di prova
Testo della funzione di prova
perchè alla funzione non passi il contenuto della variabile, ma la variabile stessa, e quindi il valore al suo interno viene modificato.
Per capire questo concetto devi avere chiaro il concetto di scopo (traduzione che non mi piace di "scope" di una variabile).
http://it2.php.net/manual/it/languag...bles.scope.php
In poche parole nel primo caso la variabile $stringa fuori dalla funzione è diversa e separata dalla variabile $stringa all'interno della funzione.
Il carattere & serve per passare alla funzione la variabile vera e propria e per dire alla funzione di comportarsi diversamente dalle regole definite di separazione degli "scopi".
Ciao, spero di aver soddisfatto la tua curiosità.