PHP kézikönyv
Előző | 19. Fejezet. Osztályok és objektumok (PHP 5) | Következő

# Az alapok

## class

Minden osztálydefiníció a class kulcsszóval kezdődik, amit az osztály neve követ, ami bármi lehet, kivéve fenntartott szó a PHP-ban. Ez egy pár kapcsos zárójel ( { és } ) követ, ami tartalmazza az adattagok és metódusok definícióját. Az álváltozó, $this hozzáférhető amikor a metódust objektumon belül hívtuk meg. $this egy referencia a hívó objektumra (rendszerint az az objektum, amihez a metódus tartozik, de lehet más objektum is, ha a metódust statikusan hívtuk meg vagy másodlagos objektumból). Ezt mutatják be a következő példák:

Példa 19-1. A $this változó objektum-orientált nyelvben

`<?php class A { function foo() { if (isset($this)) { echo '$this definiálva van ('; echo get_class($this); echo ")\n"; } else { echo "\$this nincs definiálva.\n"; } } } class B { function bar() { A::foo(); } } $a = new A(); $a->foo(); A::foo(); $b = new B(); $b->bar(); B::bar(); ?>`

A fenti példa a következő kimenetet adja:

    $this definiálva van (a)
    $this nincs definiálva.
    $this definiálva van (b)
    $this nincs definiálva.

Példa 19-2. Egyszerű Osztálydefiníció

`<?php class SimpleClass { // adattag deklaráció public $var = 'alapértelmezett érték'; // metódus deklaráció public function displayVar() { echo $this->var; } } ?>`

Az alapértelmezett értéknek állandos (konstans) kifejezésnek kell lennie, nem (például) egy változó, osztály adattag vagy függvényhívás.

Példa 19-3. Osztály adattagok alapértelmezett értékei

`<?php class SimpleClass { // érvénytelen adattag-deklarációk: public $var1 = 'hello '.'world'; public $var2 = <<<EOD hello world EOD; public $var3 = 1+2; public $var4 = self::myStaticMethod(); public $var5 = $myVar; // érvényes adattag-deklarációk: public $var6 = myConstant; public $var7 = self::classConstant; public $var8 = array(true, false); } ?>`

> Megjegyzés: Itt található néhány hasznos függvény osztályok és objektumok kezeléséhez. Ehhez nézdd meg a Osztály/Objektum Függvények részt.

## new

Egy osztálypéldány létrehozásához új objektumot kell létrehozni és változóba tárolni. Az objektum mindig bekerül a változóba létrehozáskor, kivéve ha az új objektumnak van konstruktora, és ez kivételt (exception) dob vagy hibát okoz. Az osztályokat használat előtt kellene definiálni (és néhány esetben ez egy követelmény).

Példa 19-4. Osztálypéldány létrehozása

`<?php $instance = new SimpleClass(); ?>`

Amikor egy előre létrehozott objektumpéldányt tárolunk új változóba, az új változó hozzáfér ugyanahhoz a példányhoz, amit tároltunk. Így viselkedik akkor is, amikor az objetumpéldányt függvénynek adjuk át. Egy, már meglévő objektumnak a másolatát klónozással lehet elkészíteni.

Példa 19-5. Objektumok értékadása

`<?php $assigned = $instance; $reference =& $instance; $instance->var = '$assigned-nek ez az értéke lesz'; $instance = null; // $instance és $reference értéke null lesz var_dump($instance); var_dump($reference); var_dump($assigned); ?>`

A fenti példa a következő kimenetet adja:

    NULL
    NULL
    object(SimpleClass)#1 (1) {
       ["var"]=>
         string(30) "$assigned-nek ez az értéke lesz"
    }

## extends

Egy osztály örökölhet metódusokat és adattagokat már osztályoktól az extends kulcsszót használva az osztálydeklarációban. Nem lehetséges öröklös egyszerre több osztálytól, egy osztály egyszerre csak egy alap osztálytól örökölhet.

Az örökölt metódusok és adattagok felülírhatóak, hacsak nem ha azok a szülő osztályban a final kulcsszóval vannak definiálva, és ugyanazzal a névvel van definiálva a szülő osztályban. Lehetséges a hozzáférés a felülírt metódusokhoz és adattagokhoz ezeket renerenciaként használva a parent::-tal.

Példa 19-6. Egyszerű osztályöröklődés

`<?php class ExtendClass extends SimpleClass { // Szülő osztály metódusának újradefiniálása function displayVar() { echo "Öröklő osztály\n"; parent::displayVar(); } } $extended = new ExtendClass(); $extended->displayVar(); ?>`

A fenti példa a következő kimenetet adja:

    Öröklő osztály
    alapértelmezett érték

Előző | Tartalom | Következő
Osztályok és objektumok (PHP 5) | Fel | Automatikusan betöltődő objektumok