Forum und email

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:

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

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

Example#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(truefalse);
    
    
}
?>

Note: 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).

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

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

Example#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