Osztály/Objektum függvények
Bevezetés
A függvényekről
Ezek a függvények PHP osztályokról és objektumpéldányokról adnak információkat, mint például: az objektum osztályának nevét (tÃpusát), a tagváltozóit másnéven tulajdonságait, és metódusait is. Ezekkel a függvényekkel egy objektumnak nem csak az osztály-tagságát lehet megállapÃtani, hanem a származását is, azaz, melyik osztályt kiterjesztése az adott objektum osztály.
Egy használati példa
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 (Zoldseg), meghatározva, hogy ehetÅ‘-e vagy sem (eheto), és hogy milyen szÃnű. Az alosztály a paraj (Paraj) hozzáad egy új metódust, hogy megfÅ‘zhesd, és egy másikat, hogy megállapÃtsd, hogy fÅ‘tt-e.
Example#1 classes.inc
<?php
// alap osztály tulajdonságokkal és metódusokkal
class Zoldseg {
var $eheto;
var $szin;
function Zoldseg ( $eheto, $szin="zöld" ) {
$this->eheto = $eheto;
$this->szin = $szin;
}
function eheto_e() {
return $this->eheto;
}
function milyen_szinu() {
return $this->szin;
}
} // vége a Zoldseg osztálynak
// kiterjesztjük az alap osztályt
class Paraj extends Zoldseg {
var $megfozve = false;
function Paraj() {
$this->Zoldseg ( true, "zöld" );
}
function fozes() {
$this->megfozve = true;
}
function fott_e() {
return $this->megfozve;
}
} // vége a Paraj osztéynak
?>
Most két példányt létrehozunk a fenti osztályokból, és információkat Ãrunk ki rólunk, beleértve az származásukat is. Definiálunk néhány hasznos függvényt, fÅ‘leg azért, hogy ezeket az információkat szépen Ãrjuk ki.
Example#2 test_script.php
<pre>
<?php
include "classes.inc";
// hasznos függvények
function valtozok_kiirasa($obj) {
$tomb = get_object_vars($obj);
while (list($tul, $ertek) = each($tomb))
echo "\t$tul = $ertek\n";
}
function metodusok_kiirasa($obj) {
$tomb = get_class_methods(get_class($obj));
foreach ($tomb as $metodus)
echo "\tfunction $metodus()\n";
}
function os_osztaly($obj, $osztaly) {
global $$obj;
if (is_subclass_of($$obj, $osztaly)) {
echo "A $obj a " . get_class($$obj) . " osztályhoz tartozik, ";
echo "ami a $class egy alosztálya.\n";
} else {
echo "A $obj nem tartozik $class egy alosztályához.\n";
}
}
// két objektumpéldány létrehozása
$karalabe = new Zoldseg(true,"kék");
$soklevelu = new Paraj();
// objektuminformációk kiÃrása
echo "karalabe: CLASS " . get_class($karalabe) . "\n";
echo "soklevelu: CLASS " . get_class($soklevelu);
echo " PARENT " . get_parent_class($soklevelu) . "\n";
// a karalábé tulajdonságai
echo "\nkaralabe: Tulajdonságok\n";
valtozok_kiirasa($karalabe);
// a soklevelű paraj metódusai
echo "\nsoklevelu: Metódusok\n";
metodusok_kiirasa($soklevelu);
echo "\nSzülők:\n";
os_osztaly("soklevelu", "Paraj");
os_osztaly("soklevelu", "Zoldseg");
?>
</pre>
Fontos észrevenni, hogy a fenti példában a $soklevelu a Paraj objektum egy példánya, amely a Zoldseg egy alosztálya objektumnak, ezért a programunk utolsó része a következÅ‘t Ãrja ki (szerencsére nincs probléma a névelÅ‘kkel :)
[...] Szülők: A soklevelu nem tartozik Paraj egy alosztályához. A soklevelu a paraj osztályhoz tartozik, ami a Zoldseg egy alosztálya.
Table of Contents
- call_user_method_array — meghÃvja az adott objektum egy metódusát paramétertömbbel [ellenjavallt]
- call_user_method — Egy megadott objektumon belül meghÃv egy függvényt [ellenjavallt]
- class_exists — megvizsgálja, hogy definiált-e az osztály
- get_class_methods — Osztálymetódusnevek tömbjével tér vissza.
- get_class_vars — visszaadja az osztály alaptulajdonságait egy tömbben
- get_class — visszaadja egy objektum osztályának a nevét
- get_declared_classes — visszaadja a jelenlegi szkriptben definiált osztályok neveit
- get_declared_interfaces — Returns an array of all declared interfaces
- get_object_vars — Objektumtulajdonságok asszociatÃv tömbjével tér vissza
- get_parent_class — visszaadja egy objektum vagy osztály szülő osztályát
- interface_exists — Checks if the interface has been defined
- is_a — megvizsgálja, hogy az objektum leszármazottja vagy tagja-e egy osztálynak
- is_subclass_of — megviszgálja, hogy egy objektum egy megadott osztálynak egy alosztályához tartozik-e
- method_exists — ellenőrzi az osztálymetódus létezését
- property_exists — Checks if the object or class has a property