Új PHP osztály létrehozása:
class osztalyom{
//osztályon belüli tartalom
}
Ahogy a fenti példában láthatjuk, osztályt a class szóval majd az osztály nevével hozunk létre, azután az osztály tartalma a kapcsos zárójelek közé kerül. Ahhoz hogy ez az osztályunk használható is legyen, attribútumokra és metódusokra is szükségünk lesz. Attribútumokat úgy hozhatunk létre, hogy a megfelelő kulcsszavakkal változókat deklarálunk. Mik ezek a kulcsszavak? A public, protected, private. Az alábbi kódban létrehozunk három attribútumot:
class osztalyom{
public $attributum1;
protected $attributum2;
private $attributum3;
}
Az osztályon belüli attribútumok használata megegyezik az osztályon kívüli változók használatával. Jobb leszögezni, hogy az osztályon belül deklarált változók nem globálisak.
Hogy mit is takar a public, protected, private kulcsszó? Ezekkel a kulcsszavakkal tudjuk szabályozni a láthatósági szinteket. Fontos megjegyezni, hogy a láthatósági szinteket csak a PHP 5-ös verziójától tudjuk megadni. Minden metódus és adattag elé kiírhatóak a kulcsszavak, ha nem írjuk ki, akkor a PHP automatikusan public-ként kezeli azt. A public megegyezik a PHP 4-es verziójában használt var kulcsszóval. A public kulcsszóval ellátott metódus vagy tulajdonság tehát elérhető az őt tartalmazó osztály metódusaiból, a belőle származtatott osztyályokban, és az objektumokból is.
A protected kulcsszót használva, a metódus, vagy tulajdonság csak az őt tartalmazó osztály metódusaiból, vagy a belőle származtatott osztályokban elérhető, fontos megjegyezni azomban, hogy objektumokból nem elérhetőek.
A private kulcsszó használva, a metódus, vagy tulajdonság, csak az őt tartalmazó osztály metódusaiból érhető el.
Metódusokat úgy hozhatunk létre, hogy az osztálydefiníción belül metódusokat deklarálunk. A metódusok létrehozásakor is használjuk a 3 kulcsszót (public, protected, private). Az alábbi kódban létrehozunk két metódust, továbbá a metodus2() két paramétert is vár.
class osztalyom{
public metodus1(){
//metodus1 tartalma
}
public metodus2($attributum1, $attributum2){
//metodus2 tartalma
}
}
Most, hogy tudjuk hogyan hozunk létre attribútumokat és metódusokat, nézzük meg hogyan tudjuk használni őket. Egy osztályt mielőtt használni szeretnék példányosítanunk kell objektum formájában. Objektumot a new kulcsszóval lehet létrehozni. Az alábbi kódban példányosítjuk a fenti kódban szereplő osztályunkat 3 példányban:
$peldany1 = new osztalyom();
$peldany2 = new osztalyom();
$peldany3 = new osztalyom();
Miután példányosítottuk az osztályunkat, nézzük meg hogyan is használhatjuk azokat. Az alábbi kódban létrehozunk egy osztályt, egy metódussal, amely kiírja a már sok helyen megszokott Hello World szöveget, két féle képpen is.
class osztalyom{
public $attributum = 'Hello World';
public metodus($attributum){
echo $attributum;
}
}
$peldany = new osztalyom();
$peldany->metodus('Hello World');
echo $peldany->attributum;
Nézzük át, hogy a fenti kódunkban mi is történik. Létrehozzuk az osztalyom osztályt, melyben létrehoztunk egy metódust, mely egy paramétert vár. Az osztályunkat példányosítottuk a $peldany változóba, és most jön az újdonság:
Osztályunkon belül a metódusokra a $peldany_neve->metodus_neve(); , az attribútumokra a $peldany_neve->attributum_neve; módon hivatkozunk. Mivel a fenti programunkban meghívjuk a metodus() nevű metódusunkat, mely a $attributum paramétert várja, melynek a Hello World értéket adtuk meg, kiírja hogy Hello World. De mivel meghívtuk a metóduson kívüli $attributum nevű attrubútumunkat, melyet ki is iratunk az echo kulcsszóval, szintén kiírja hogy Hello World.
Mindenképpen érdemes megjegyezni, hogy a metóduson belüli $attributum, és a metóduson kívüli $attributum nem ugyan az az attribbútum. A metóduson belüli attribútumunk a metódus meghívásakor átadott paraméterünket írja ki. A metóduson kívüli attribútumokra, a $this kulcsszóval hivatkozhatunk, melyet az alábbi kódunkban bemutatok:
class osztalyom{
public $attributum;
public function metodus(){
echo $this->attributum;
}
}
$peldany = new osztalyom();
$peldany->attributum = 'Hello World';
$peldany->metodus();
A fenti kódban két újdonság is szerepel. Az egyik, hogy az attribútumunknak kívülről adtunk értéket. A másik, hogy a metódusunkon belülről hívtuk meg a külső attribútumot. Eddig egyszerű volt igaz? Most bonyolítsuk egy kicsit. A $this kulcsszóval metódusunkon belülről másik metódust is meghívhatunk, melyet az alábbi kódunk prezentál:
class osztalyom{
public $attributum;
public function metodus1(){
echo $this->attributum;
}
public function metodus2($attributum){
$this->attributum = $attributum;
$this->metodus1();
}
}
$peldany = new osztalyom();
$peldany->metodus2('Hello World');
A fenti kódunkban létrehoztunk egy külső attribútumot, és két metódust. A metodus2() egy paramétert is vár. A metodus2() metódusunk-on belül a külső attribútumunknak megadtuk a Hello World értéket, metodus1() metódust meghívtuk $this->metodus1(); módon, mely metódusunk kiírja a külső attribútumunkat.
A metódusoknak lehetnek visszatérési értékeik is, és objektumon át ki is írathatjuk azokat. Erre is nézzünk egy példát:
class osztalyom{
public function metodus1(){
return 'Érték';
}
}
$peldany = new osztalyom();
echo $peldany->metodus1();
A fenti kód kiírja hogy: Érték. A függvényuk ugyan úgy viselkedik, mintha osztályon kívül deklarálnánk, annyi különbséggel, hogy csak objektumon át érhetjük el (ez nem teljesen igaz, de erről bővebben és későbbi cikkben fogunk beszélni).