Sono nuovo di PHP e pratico utilizzando variabili statiche. Ho deciso di prendere un esempio che ho imparato dal C++ e di riscriverlo per PHP (esempio dal basso di this article).Assegnazione var statica a var non statica, metodo per restituire valori non funzionanti
C'è una classe con due variabili private (una statica), una funzione di costruzione e un metodo get. Il costruttore assegna il valore della variabile statica alla seconda variabile privata e quindi incrementa.
<?php
class Something
{
private static $s_nIDGenerator = 1;
private $m_nID;
public function Something() {
$m_nID = self::$s_nIDGenerator++;
echo "m_nID: " . $m_nID . "</br>"; //for testing, can comment this out
}
public function GetID() {
return $m_nID;
}
}
// extra question:
// static variable can be assigned a value outside the class in C++, why not in PHP?
// Something::$s_nIDGenerator = 1;
$cFirst = new Something();
$cSecond = new Something();
$cThird = new Something();
echo $cFirst->GetID() . "</br>";
echo $cSecond->GetID() . "</br>";
echo $cThird->GetID() . "</br>";
?>
Utilizzando il test eco in linea 9 per vedere se m_nID è sempre un valore che vedo:
m_nID: 1
m_nID: 2
m_nID: 3
Ma questi valori sono non essere restituito dal "-> getId()" chiamate. Tutte le idee perché?
Modifica: entrambe le risposte finora hanno risolto questo, vorrei poterle "controllare" entrambe, quindi grazie! Lascerò il codice originale nella domanda così com'è per qualsiasi futura persona che ha un problema simile
@tempe Ugh, ho dimenticato che anche l'altro riferimento era errato = ( –
Ho controllato la risposta di cui sopra da Mr. Cook, dove mi suggerì di usare $ this-> 'nel costruttore e anche il metodo get, che funzionava --- ma grazie per il vostro aiuto troppo! e sì, mentre io sono a conoscenza di 'this' in C++, trovo sto bisogno di usare più di apprendimento PHP – tempcode
@tempe Sì, è nella mia risposta aggiornato sotto ** Aggiornamento . ** –