About
Tyto
funkce
vám
umožňují
získávat
informace
o
třídách
a
instancích
.
Můžete
zjistit
název
třídy
do
které
objekt
patří
nebo
jeho
proměnné
a
metody
.
Pomocí
těchto
funkcí
můžete
zjistit
nejen
příslušnost
objektu
k
třídě
,
ale
i
jeho
předka
(
tj
.
kterou
třídu
třída
tohoto
objektu
rozšiřuje
)
.
Ukázka použití
V
této
ukázce
nejdříve
definujeme
základní
třídu
a
rozšíření
této
třídy
.
Základní
třída
popisuje
obecnou
zeleninu
,
ať
už
je
jedlá
nebo
ne
a
bez
ohledu
na
její
barvu
.
Podtřída
Spenat
přidává
metodu
na
uvaření
této
zeleniny
a
další
,
která
zjistí
,
jestli
je
vařená
.
Příklad
1
.
classes.inc
?php
/
/
základní
třída
s
členskými
proměnnými
a
metodami
class
Zelenina
{
var
$jedla
;
var
$barva
;
function
Zelenina
(
$jedla
,
$barva="green
"
)
{
$this
-
jedla
=
$jedla
;
$this
-
barva
=
$barva
;
}
function
je_jedla(
)
{
return
$this
-
jedla
;
}
function
jaka_barva(
)
{
return
$this
-
barva
;
}
}
/
/
konec
tridy
zelenina
/
/
rozsiruje
zakladni
tridu
class
Spenat
extends
Zelenina
{
var
$varena
=
false
;
function
Spenat(
)
{
$this
-
Zelenina
(
true
,
"zelena
"
)
;
}
function
cook_it(
)
{
$this
-
varena
=
true
;
}
function
je_varena(
)
{
return
$this
-
varena
;
}
}
/
/
konec
tridy
Spenat
?
|
|
Potom
z
těchto
tříd
vytvoříme
2
objekty
a
vytiskneme
informace
o
nich
,
vč
.
rodičovských
tříd
.
Také
definujeme
některé
pomocné
funkce
,
především
kvůli
pohodlnému
tisku
informací
.
Příklad
2
.
test_script.php
pre
?php
include
"
classes.inc"
;
/
/
pomocné
funkce
function
vytiskni_promenne($obj
)
{
$pole
=
get_object_vars($obj)
;
while
(list($vlastnost
,
$hodnota
)
=
each($pole)
)
echo
"\t$vlastnost
=
$hodnota\n"
;
}
function
vytiskni_metody($obj
)
{
$pole
=
get_class_methods(get_class($obj))
;
foreach
($pole
as
$metoda
)
echo
"\tfunction
$metoda()\n"
;
}
function
class_parentage($obj
,
$class
)
{
global
$$obj
;
if
(is_subclass_of($$obj
,
$class)
)
{
echo
"Objekt
$obj
patri
do
tridy
".get_class($$obj)
;
echo
"
ktera
je
podtridou
$class\n"
;
}
else
{
echo
"Objekt
$obj
nepatri
do
podtridy
tridy
$class\n"
;
}
}
/
/
instancujeme
2
objekty
$zeleninka
=
new
Zelenina(true
,"modra")
;
$listnaty
=
new
Spenat()
;
/
/
vytisknout
informace
o
obou
objektech
echo
"zeleninka
:
CLASS
"
.get_class($zeleninka)
."\n"
;
echo
"listnaty
:
CLASS
"
.get_class($listnaty)
;
echo
"
,
PARENT
".get_parent_class($listnaty)
."\n"
;
/
/
vytisknout
vlastnosti
zeleninky
echo
"\nzeleninka
:
Vlastnosti\n"
;
print_vars($zeleninka)
;
/
/
a
metody
objektu
listnaty
echo
"\nlistnaty
:
Metody\n"
;
print_methods($listnaty)
;
echo
"\nRodic:\n"
;
class_parentage("listnaty"
,
"Spenat")
;
class_parentage("listnaty"
,
"Zelenina")
;
?
/
pre
|
|
Je
třeba
poznamenat
,
že
ve
výše
uvedené
ukázce
je
objekt
$listnaty
instancí
třídy
Spenat
,
která
je
podtřídou
třídy
Zelenina
,
a
poslední
část
výše
uvedeného
skriptu
tudíž
vytiskne
: