Web Tervezés - 11. Fejezet

PHP VI.

Osztályok

A PHP objektum orientált nyelv, így nem hiányozhatnak az osztályok sem.
Minden objektum referencia szerint tárolódik.
Osztályon belül az adattagokat és metódusokat a $this változó segítségével érhetjük el. A szerepe hasonló, mint java-ban.
Használhatjuk a self kulcsszót is, mely az adott osztályt jelenti. Az utána írt dupla kettőspont a scope feloldás.
A self-et használva kikerülhetjük a polimorfizmust hiszen megadjuk, hogy melyik osztályból hívjuk a metódust.
A metódusok alapból public láthatósággal rendelkeznek. A lehetséges láthatóságok: private, protected, public.
Változó osztályok: hasonlóan mint korábban, az osztály nevét futási időben vehetjük egy változóból.
Néhány fontosabb metódus: A copy konstruktor egy kicsit másképp működik. A clone kulcsszóval tudjuk meghívni. Ilyenkor először egy sekély másolást végez a php.
Ezután az új objektumnak meghívódik a __clone metódusa, ahol további másolásokat végezhetünk.
Statikus adattagokat és metódusokat a static kulcsszóval hozhatunk létre.
Objektumok összehasonlítására használhatjuk a == operátort, mely azt ellenőrzi, hogy azonosak-e a két objektum adattagjai (név + érték), valamint azonos-e a típusuk.
A === pedig azt ellenőrzi, hogy a két objektum ugyanaz az objektum-e.

Öröklődés

Az öröklődés hasonlóan megy, mint más objektum orientált nyelvekben. Az extends kulcsszót használhatjuk.
Egy osztályon belül az ősosztályra a parent:: scope feloldó orerátorral hivatkozhatunk.
Így elérhetőek az ősosztály felüldefiniált konstansai, metódusai.
Osztályon belül is létrehozhatunk konstansokat a const kulcsszó megadásával. A konstansok neve elé nem kell a $ jel.
Öröklődéssel a konstansok is felüldefiniálhatóak.
Lehetőség van interface-ek megadására is, melyek publikus metódus fejléceket és konstansokat tartalmazhatnak.
Az interface-ek is öröklődhetnek egymásból az extends kulcsszóval. Interface-t megvalósítani az implements kulcsszóval van lehetőség.
Az osztályokkal ellentétben az interface konstansokat nem lehet felüldefiniálni.
Értelemszerűen ezekből nem lehet objektumot példányosítani.
Az osztályokkal is elérhetjük, hogy ne lehessen példányosítani azokat, mégpedig az abstract kulcsszóval.
Metódusok elé is kitehetjük, ilyenkor az osztály elé is ki kell tenni.
Java-hoz hasonlóan a final kulcsszóval megállíthatjuk az öröklődést, illetve a felüldefiniálást.

Feladat

Egészítsd ki a blog bejegyzések listázását egy törlés gombbal.
A felhasználó csak a saját bejegyzését tudja törölni.

Feladat

Készíts a bejegyzéseknek saját oldalt, ahol csak az az egy bejegyzés szerepel.

Feladat

Készíts kommentelési lehetőséget a blog bejegyzés alá.