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() .