PHP - klasy i obiekty - obiektowy licznik odwiedzin

DZIAŁANIE:
 

Kod:

Plik 139klasa_licznika.php :

Plik 139obiektowy_licznik.php :

Ewentualne Objaśnienia:

Tutaj stworzyliśmy klasę licznika - opartego na pliku tekstowym. Klasa umożliwia zwiększanie wartości licznika oraz wyświetlanie aktualnej jego wartości. Wewnątrz klasy mamy 2 składowe $licz - przechowuje liczbę odwiedzin oraz $plik - uchwyt do naszego pliku txt z wartością licznika. Jak widać użyliśmy dla nich operatorów zasięgu - private - dzięki temu nasze składowe są widoczne jedynie wewnątrz bloku klasy. Gdyby składowa $ile była poprzedzona operatorem public - istniała by pewna możliwość sfałszowania niejako jej wartości, a więc wartości licznika.

Zadeklarowałem również 2 metody tzw. specjalne :
- __construct - tzw. konstruktor - jest to kod, który jest zawsze wykonywany automatycznie podczas tworzenia nowego obiektu danej klasy. Konstruktor może mieć również nazwę taką jak nazwa klasy.
- __destruct - jest to kod wykonywalny zawsze tuż przed usunięciem obiektu z pamięci

Kod jest bardzo prosty jakby nie było - funkcja specjalna construct otwiera nasz plik txt, odczytuje jego rozmiar - czyli liczbę znaków jak i odwiedzin dla zmiennej $licz ( jeśli go nie ma to go tworzy i wpisuje jeden znak "-" , a zmienną $licz ustawia na wartość 1 ) - jeżeli istnieje ciasteczko oznacza to, że już został licznik naliczony, jeżeli nie dopisujemy do pliku jeden znak "-" oraz ustawiamy cookies.

Funkcja pokazLicznik - jest dość sprytna - jest ona publiczna, ale nie modyfikuje wartości zmiennej $licz czego oczywiście nie chcielibyśmy; dzięki temu bezpiecznie odczytujemy wartość licznika odwiedzin.

W pliku gdzie chcemy wyświetlić zawartość licznika (wartość) dołączamy na początku kodu nasz plik z klasą oraz tworzymy nowy obiekt. Dalej już tylko dla naszego nowego obiektu - u mnie nazywa się on $licznik wywołujemy funkcję pokazLicznik.

Chciałem tutaj wspomnieć o pewnym modyfikatorze zasięgu - mianowicie static - powoduje on, że dana składowa jest wspólna dla wszystkich obiektów danej klasy. Zmiana wartości składowej w jednym obiekcie automatycznie zmienia je we wszystkich obiektach tej samej klasy.
Metody tak oznaczone można wywoływać bez tworzenia obiektu, stosując zapis : NazwaKlasy::NazwaMetody() .