Jestem nowy w PHP i ćwiczę używając zmiennych statycznych. Postanowiłem pobrać przykład, który nauczyłem się z C++ i ponownie napisałem dla PHP (przykład z dołu this article).przypisywanie statycznego var do niestatycznego var, metoda zwracania wartości niedziałających
Istnieje klasa z dwiema zmiennymi prywatnymi (jedna statyczna), konstruktorem i metodą get. Konstruktor przypisuje wartość zmiennej statycznej do drugiej zmiennej prywatnej, a następnie inkrementuje.
<?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>";
?>
Korzystanie z echa testu w linii 9, aby zobaczyć czy m_nID jest uzyskanie wartości widać:
m_nID: 1
m_nID: 2
m_nID: 3
Ale te wartości są nie zwracane przez „-> getId()” połączenia. Jakieś pomysły, dlaczego?
Edytuj: obie odpowiedzi do tej pory rozwiązały to, chciałbym móc "sprawdzić" je obie, więc dziękuję! Zostawię oryginalny kod w pytaniu, tak jak jest dla przyszłych ludzi, którzy mają podobny problem.
@tempe Ugh, zapomniałem o innym odnośniku również było źle = ( –
Sprawdziłem powyższą odpowiedź Mr. Cook'a, gdzie zasugerował użycie '$ this->' w konstruktorze oraz metodę get, która działała --- ale dziękuję za twoją pomoc! i tak, gdy jestem świadomy 'tego' w C++, stwierdzam, że potrzebuję go użyć więcej nauki PHP – tempcode
@tempe Tak, to jest w mojej zaktualizowanej odpowiedzi pod ** Update **. –