Forum und email

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