Ezek a függvények osztályokról és objektumpéldányokról
adnak információkat. Megkaphatod az osztály nevét, amihez
egy adott objektum tartozik, sőt az elemeinek tulajdonságait,
és metódusait is. Ezen függvények használatával egy objektumnak
nem csak az osztály-tagságát tudod megállapítani, hanem
a származását is (pl. hogy melyik osztálytól örökölt
az adott objektum osztály).
Ebben a példában definiálunk egy alap osztályt, és
ennek egy kiterjesztését. Az alap osztály leír egy zöldséget
(vegetable), meghatározva, hogy ehető-e vagy sem (edible),
és hogy milyen színű. Az alosztály a paraj
(Spinach) hozzáad egy új metódust,
hogy megfőzhesd, és egy másikat, hogy megállapítsd, hogy
főtt-e.
Példa 1. classes.inc 1
2
3 <?php
4
5 // alap osztály tulajdonságokkal és metódusokkal
6 class Zoldseg {
7
8 var $eheto;
9 var $szin;
10
11 function Zoldseg ( $eheto, $szin="zöld" ) {
12 $this->eheto = $eheto;
13 $this->szin = $szin;
14 }
15
16 function eheto_e() {
17 return $this->eheto;
18 }
19
20 function milyen_szinu() {
21 return $this->szin;
22 }
23
24 } // vége a Zoldseg osztálynak
25
26
27 // kiterjesztjük az alap osztályt
28 class Paraj extends Zoldseg {
29
30 var $megfozve = false;
31
32 function Paraj() {
33 $this->Zoldseg ( true, "zöld" );
34 }
35
36 function fozes() {
37 $this->megfozve = true;
38 }
39
40 function fott_e() {
41 return $this->megfozve;
42 }
43
44 } // vége a Paraj osztéynak
45
46 ?>
47
48 |
|
Most két példányt létrehozunk a fenti osztályokból, és információkat
írunk ki rólunk, beleértve az őseiket is. Definiálunk néhány
hasznos függvényt, főleg azért, hogy szép legyen az információk
kiírása.
Példa 2. test_script.php 1
2
3 <pre>
4 <?php
5
6 include "classes.inc";
7
8 // hasznos függvények
9
10 function valtozok_kiirasa($obj) {
11 $tomb = get_object_vars($obj);
12 while (list($tul, $ertek) = each($tomb))
13 echo "\t$tul = $ertek\n";
14 }
15
16 function metodusok_kiirasa($obj) {
17 $tomb = get_class_methods(get_class($obj));
18 foreach ($tomb as $metodus)
19 echo "\tfunction $metodus()\n";
20 }
21
22 function os_osztaly($obj, $osztaly) {
23 global $$obj;
24 if (is_subclass_of($$obj, $osztaly)) {
25 echo "A $obj a " . get_class($$obj) . " osztályhoz tartozik, ";
26 echo "ami a $class egy alosztálya.\n";
27 } else {
28 echo "A $obj nem tartozik $class egy alosztályához.\n";
29 }
30 }
31
32 // két objektumpéldány létrehozása
33
34 $karalabe = new Zoldseg(true,"kék");
35 $soklevelu = new Paraj();
36
37 // objektuminformációk kiírása
38 echo "karalabe: CLASS " . get_class($karalabe) . "\n";
39 echo "soklevelu: CLASS " . get_class($soklevelu);
40 echo " PARENT " . get_parent_class($soklevelu) . "\n";
41
42 // a karalábé tulajdonságai
43 echo "\nkaralabe: Tulajdonságok\n";
44 valtozok_kiirasa($karalabe);
45
46 // a soklevelű paraj metódusai
47 echo "\nsoklevelu: Metódusok\n";
48 metodusok_kiirasa($soklevelu);
49
50 echo "\nSzülők:\n";
51 os_osztaly("soklevelu", "Paraj");
52 os_osztaly("soklevelu", "Zoldseg");
53 ?>
54 </pre>
55
56 |
|
Egy fontos dolog a fenti példában, hogy a
$soklevelu egy példánya
a Paraj objetumnak,
ami egy alosztálya a Zoldseg
objektumnak, ezért az utolsó része a scriptnek ezt
fogja kiírni (szerencsére nincs probléma a névelőkkel :):