A partire dalla versione 5.3.0 di PHP è stato deprecato il passaggio per riferimento quando si chiama un metodo o una funzione.
l'utilizzo dell'operatore & nelle chiamate dei vostri metodi - esempio: metodo(&$a) - genera il messaggio di warning mostrato all'inizio.
In PHP 5 infatti gli oggetti vengono sempre passati per reference (per riferimento) e quindi in questo caso l'operatore & non serve. Per i tipi di dati primitivi basta indicarlo nella definizione del metodo.
Ricordo infatti che dalla versione 5.3.0 di PHP è stato deprecato il passaggio per riferimento nella chiamata di un metodo ma non certo il passaggio per riferimento. Vediamo un esempio:
Ricordo infatti che dalla versione 5.3.0 di PHP è stato deprecato il passaggio per riferimento nella chiamata di un metodo ma non certo il passaggio per riferimento. Vediamo un esempio:
function functionA(&$var) {
$var++;
}
functionB($var)
{
$var++;
}
$n = 1;
// corretto
functionA($n);
// deprecated
// functionB(&$n);
echo $n; // output 2
In entrambi i casi si vuole che la variabile $n venga incrementata dal metodo ma il secondo modo (commentato per non far attivare il warning) è scorretto.
Se stai utilizzando codice di terze parti ti può capitare che venga ancora utilizzato il passaggio per riferimento a tempo di chiamata. Per far funzionare la tua applicazione puoi intervenire sul php.ini attraverso la seguente direttiva
allow_call_time_pass_reference = on
Questa però deve essere presa come una soluzione temporanea in attesa della versione corretta.