klasa
Klasa
jest
to
zbiór
zmiennych
i
funkcji
operujących
na
tych
zmiennych
.
Do
definicji
klasy
używana
jest
następująca
składnia
:
Definiuje
to
klasę
o
nazwie
Koszyk
,
która
zawiera
tablicę
asocjacyjną
artykułów
znajdujących
się
w
wózku
i
dwie
funkcje
do
dodawania
i
usuwania
produktów
z
koszyka
.
Uwaga
!
|
Poniższe
uwagi
dotyczą
PHP
4
.
Nazwa
stdClass
jest
używana
wewnętrznie
przez
Zend
i
jest
zarezerwowana
.
W
PHP
nie
możesz
zdefiniować
klasy
o
nazwie
stdClass
.
Nazwy
funkcji
__sleep
i
__wakeup
mają
magiczne
znaczenie
dla
klas
w
PHP
.
Klasy
nie
mogą
zawierać
funkcji
o
tych
nazwach
,
chyba
że
zgadzasz
się
na
przypisanie
do
nich
magicznej
funkcjonalności
.
Poniżej
możesz
znaleźć
więcej
informacji
.
PHP
rezerwuje
wszystkie
nazwy
funkcji
zaczynające
się
od
__
na
funkcje
magiczne
.
Zalecane
jest
nieużywanie
funkcji
z
nazwami
zaczynającymi
się
od
__
chyba
że
chcesz
jakiejś
magicznej
funkcjonalności
.
|
Notatka
:
W
PHP
4
dozwolone
są
tylko
stałe
inicjalizatory
zmiennych
var
.
Aby
zainicjalizować
zmienne
z
nie-stałymi
wartościami
,
potrzebujesz
funkcję
inicjalizacyjną
,
która
jest
wywoływana
automatycznie
zaraz
po
utworzeniu
obiektu
z
danej
klasy
.
Taka
funkcja
zwana
jest
konstruktorem
(
zobacz
poniżej
)
.
Klasy
są
typami
,
które
są
w
zasadzie
tylko
schematami
dla
właściwych
zmiennych
.
Zmienne
pożądanego
typu
musisz
stworzyć
korzystając
z
operatora
new
.
Kod
ten
tworzy
obiekty
$koszyk
i
$inny_koszyk
,
oba
klasy
Koszyk
.
Funkcja
dodaj_produkt(
)
obiektu
$koszyk
zostaje
wywołana
w
celu
dodania
1
artykułu
typu
"10
"
do
koszyka
$koszyk
.
4
przedmioty
typu
"
0815
"
dodawane
są
do
koszyka
$inny_koszyk
.
I
$koszyk
i
$inny_koszyk
mają
funkcje
dodaj_produkt(
)
,
usun_produkt(
)
i
zmienne
.
Są
to
osobne
funkcje
i
zmienne
.
Obiekty
mogą
być
postrzegane
jako
katalogi
w
systemie
plików
.
W
systemie
plików
możesz
mieć
dwa
różne
pliki
README.TXT
,
ale
tylko
jeśli
istnieją
w
osobnych
katalogach
.
Aby
odczytać
plik
,
będąc
w
głównym
katalogu
,
musisz
podać
pełną
ścieżkę
do
tego
pliku
.
Tak
samo
jest
przy
obiektach
:
musisz
podać
pełną
nazwę
funkcji
,
z
której
chcesz
skorzystać
.
W
terminologii
PHP
katalogiem
głównym
będzie
globalna
przestrzeń
nazw
a
separatorem
ścieżki
będzie
-
.
W
związku
z
tym
nazwy
$koszyk
i
$inny_koszyk
zawierają
zupełnie
inne
zmienne
.
Zauważ
,
że
zmienna
nazywa
się
$koszyk
-
artykuly
,
a
nie
$koszyk
-
$artykuly
,
ponieważ
nazwa
zmiennej
może
zawierać
tylko
jeden
znak
dolara
.
Wewnątrz
definicji
klasy
,
nie
wiesz
pod
jaką
nazwą
obiekt
będzie
dostępny
dla
twojego
programu
:
w
momencie
pisania
klasy
Koszyk
,
nie
było
wiadomo
,
że
obiekty
będą
się
nazywać
$koszyk
lub
$inny_koszyk
.
W
związku
z
tym
nie
możesz
napisać
$koszyk
-
artykuly
wewnątrz
klasy
Koszyk
.
Zamiast
tego
,
aby
uzyskać
dostęp
do
funkcji
i
zmiennych
zawartych
w
klasie
,
można
użyć
pseudo-zmiennej
$this
,
która
może
być
odczytana
jako
'
moje
własne
'
lub
'bieżący
obiekt
'
.
A
więc
'
$this
-
artykuly[$nrart
]
+=
$liczba
'
może
być
odczytane
jako
'dodaj
$liczba
do
licznika
$nrart
z
mojej
własnej
tablicy
artykuly
'
lub
'dodaj
$liczba
do
licznika
$nrartz
tablicy
artykuly
zawartej
w
bieżącym
obiekcie
'
.