Ma rátérünk következő nagy leckecsoportunkra, megkezdjük a PHP-osztályokkal és -objektumokkal való ismerkedést. Ha figyelmesen követed leckéinket, megtanulhatod, hogyan kell objektumorientált stílusban kódot írni a PHP-ben.
Mi az objektumorientált programozás?
Az objektumorientált programozás (OOP) egy programozási modell, mely az osztályok és az objektumok koncepcióján alapul. A procedurális programozással ellentétben, ahol a hangsúly az eljárásokon és a funkciókon van, melyek operációkat hajtanak végre az adatokon, az objektumorientált programozás az olyan objektumok létrehozására fókuszál, amelyek együttesen tartalmazzák az adatokat és a funkciókat.
Az objektumorientált programozásnak számos előnye van a hagyományos vagy a procedurális programozással szemben. A legfontosabb előnyök a következők:
- Tiszta és egyértelmű moduláris struktúrát ad a programoknak.
- Segít betartani a „ne ismételd magad” elvet, és ezáltal megkönnyíti a kód karbantartását, módosítását és a debuggolást is.
- Lehetővé teszi, hogy sokkal összetettebb viselkedést hozzunk létre kevesebb kóddal, rövidebb fejlesztési idővel és az újrahasznosíthatóság magas fokával.
Az osztályok és az objektumok fogalma
Az osztályok és az objektumok az objektumorientált programozás két fő aspektusa. Az osztály a változók és a funkciók önálló, független kollekciója, melyek együttműködnek annak érdekében, hogy elvégezzenek egy vagy több specifikus feladatot. Az objektumok az osztályok individuális példányai.
Az osztály úgy működik, mint egy sablon vagy egy vázlat, melyből számos individuális objektum hozható létre. Ezek megtartják az osztály generikus tulajdonságait és viselkedését, viszont minden objektumnak más-más értéke lehet a tulajdonságokra.
Az osztályt a class kulcsszó segítségével tudjuk meghatározni, melyet az osztály neve és egy pár kapcsos zárójel ({}) követ, ahogy azt a következő példánkban is megfigyelheted majd.
Hozzunk létre egy PHP-fájlt, melynek a neve Rectangle.php lesz, majd szúrjuk be a fájlba a következő kódot, hogy elválasszuk az osztály kódját a program többi részétől. Ezután az osztályt bárhol használhatjuk, azzal, hogy beillesztjük a rectangle.php fájlt.
PHP-kód:
<?php
class Rectangle
{
// Tulajdonságok meghatározása
public $length = 0;
public $width = 0;
// A kerület meghatározásának módszere
public function getPerimeter() {
return (2 * ($this->length + $this->width));
}
// A terület meghatározásának módszere
public function getArea() {
return ($this->length * $this->width);
}
}
?>
A public kulcsszó a tulajdonságok és a módszerek előtt arra utal, hogy a tulajdonság vagy a módszer bárhonnan elérhető. Erről bővebben is lesz még szó leckecsoportunkban.
Fontos megjegyezni, hogy az osztályon belül a változókat tulajdonságoknak nevezzük, míg a funkciók megnevezése a módszer. Az osztályok megnevezése során a PascalCase módszert alkalmazzuk, azaz minden szó nagybetűvel kezdődik (pl. MyClass).
Az osztály meghatározása után a new kulcsszó segítségével objektumokat hozhatunk létre az osztályból. Az osztály módszerei és tulajdonságai közvetlenül elérhetőek az objektum által.
Hozzunk létre egy új PHP-fájlt, melynek a test.php nevet adjuk, majd szúrjuk be a fájlba a következő PHP-kódot:
<?php
// Az osztály definíciója
require 'rectangle.php';
// Új objektum létrehozása a Rectangle osztályból
$obj = new Rectangle();
// Az objektum tulajdonságai értékének lekérése
echo $obj->length; // Megjelenítés: 0
echo $obj->width; // Megjelenítés: 0
// Az objektum tulajdonságai értékének beállítása
$obj->length = 30;
$obj->width = 20;
// Az objektum tulajdonságai értékeinek ismételt olvasása, hogy bemutassuk a változásokat
echo $obj->length; // Megjelenítés: 30
echo $obj->width; // Megjelenítés: 20
// Az objektum módszereinek hívása
echo $obj->getPerimeter(); // Megjelenítés: 100
echo $obj->getArea(); // Megjelenítés: 600
?>
Az OOP valódi ereje azonban akkor mutatkozik meg, amikor egy osztályból több esetet használunk, ahogy a következő példa is mutatja:
PHP-kód:
<?php
// Az osztály definíciója
require 'rectangle.php';
// Több objektum létrehozása a Rectangle osztályból
$obj1 = new Rectangle();
$obj2 = new Rectangle();
// Mindkét objektum módszerének lehívása
echo $obj1->getArea(); // Megjelenítés: 0
echo $obj2->getArea(); // Megjelenítés: 0
// Az $obj1 tulajdonság értékeinek beállítása
$obj1->length = 30;
$obj1->width = 20;
// Az $obj2 tulajdonság értékeinek beállítása
$obj2->length = 35;
$obj2->width = 50;
// Mindkét objektum módszerének ismételt lehívása
echo $obj1->getArea(); // Megjelenítés: 600
echo $obj2->getArea(); // Megjelenítés: 1750
?>
Ahogy a példa is mutatja, a getArea() módszer a különböző objektumokon alkalmazva különböző adatcsoportokkal dolgozott. Minden objektum független, a saját tulajdonságaival és módszereivel, ezért külön is manipulálható.
Jó gyakorlást!
Nyereményjáték
Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.
A játék heti kérdése:
Mik a PHP-objektumok?
1. Változók és funkciók önálló, független kollekciói
2. Funkciók kollekciói
3. Az osztályok individuális példányai
A választ a tanulok@erdsoft.com e-mail-címre kell elküldeni, a tárgysorba pedig a következőt kell beírni: HÉTNAP-TANULOK. Sok szerencsét!
Néhány szó rólunk:
Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.