PHP kézikönyv
Előző |  | Következő

# XII. 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.

Példa 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.

Példa 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.

Előző | Tartalom | Következő
ccvs_void | Fel | call_user_method_array