Cikksorozatunk legelső részében megismerkedtünk az objektum orientált programozás lényegével, és megtudtuk azt is, miért érdemes így programoznunk - ha viszont valamiért még nem olvastad el az előző - és egyben első - részt, akkor itt a lehetőség!
Ezek után pedig kezdhetünk is gyakorlatiasabbak lenni, úgyhogy itt az idő megismerkedni azzal, hogy hogyan fognak az egy logikai egységbe tartozó programegységek ténylegesen egy egységbe kerülni. Ez az egység nem más lesz, mint az osztály, az az a class. Ez az az elem, ami összefogja az egybetartozó függvényeket és az ezek által használt adatokat, változókat is. Mindez pedig a programozási módszertan nevében is szereplő objektum alapja is lesz, mivel minden objektum egy előre definiált osztály példánya.
Mindez gyakorlatban nyer értelmet, így nézzünk is egy egyszerű példát: Ez az egyszerűség kedvéért legyen a felhasználók beléptetéséért felelős osztály, mely PHP-ban így fog kinézni:
class login{
public function login(){
//do something
echo 'Sikeres belépés!';
}
public function register(){
//do something
echo 'Sikeres regisztráció!';
}
public function signout(){
//do something
echo 'Sikeres kijelentkezés!';
}
}
Oké, nyilvánvalóan ez egy egyszerűsített példa, mert néhány kiíratáson kívül semmit nem csinál - de egy egyszerű osztály felépítése már így is jól látható rajta: példánkban az osztályunk neve nem más, mint a login, és 3 függvényt tartalmaz, a belépéshez, regisztrációhoz, és a kilépéshez (vagy legalábbis ezen műveletek sikerességét hirdető üzenetek kiírásához).
Most hogy van egy osztályunk, használni is akarhatnánk - És itt jön képbe az, hogy mivel minden objektum egy előre definiált osztály példánya. A gyakorlatban ez sem néz ki bonyolultan:
$login = new login();
$login->register();
$login->login();
$login->signout();
Kódunk első sorában a $login változóban létrehozzuk az előbb megírt osztály egy példányát, majd sorban meghívjuk mindhárom, benne megtalálható függvényt.
Természetesen a sima függvényeknél már megismert módon, az osztályban lévő függvényeknek is lehetnek bemeneti paraméterei, és visszatérési értéke is lehet.
class login{
public function login($username){
//do something
echo 'hello, kedves '.$username.'!';
return true;
}
public function register(){
//do something
echo 'Sikeres regisztráció!';
}
public function signout(){
//do something
echo 'Sikeres kijelentkezés!';
}
}
És ezek használata sem bonyolít semmit a függvényhíváson, megszokott módon történik mindez:
$login = new login();
$success = $login->login('vmarci21');
if($success){
echo 'Sikeres belépés!';
}
Mindezeknél sokkal érdekesebb, hogy PHP alatt van két, "speciális" függvényünk is, hívhatjuk őket mondjuk __construct és __destruct-nak - mert hogy ez a nevük. Előbbi az osztály egy példányának létrehozásakor, utóbbi annak megszűnésekor fut le.
class login{
public function __construct(){
//do semething
echo 'Én egy új példánya vagyok a login osztálynak!';
}
public function login($username){
//do something
echo 'hello, kedves '.$username.'!';
return true;
}
public function register(){
//do something
echo 'Sikeres regisztráció!';
}
public function signout(){
//do something
echo 'Sikeres kijelentkezés!';
}
public function __destruct(){
//do semething
echo 'Bye bye World!';
}
}
Ezek után a mai cikkben még egyetlen dolgot fogunk megismerni az osztályok világával kapcsolatban: Ez nem más, hogy hogyan hívhatja meg egy, az osztályban lévő függvény egy másik, szintén osztályban lévő függvényt. Minderre ismét egy fix "kulcsszó" szolgál, ez nem más mint a $this - ami pedig az éppen aktuális objektumot tartalmazó változó.
Használat közben mindez így néz ki:
class login{
public function __construct(){
//do semething
echo 'Én egy új példánya vagyok a login osztálynak!';
}
public function addNewUser($username){
//do something
echo 'Új felhasználó, '.$username.'!';
}
public function login($username){
//do something
echo 'hello, kedves '.$username.'!';
return true;
}
public function register($username){
//do something
$this->addNewUser($username);
echo 'Sikeres regisztráció!';
}
public function signout(){
//do something
echo 'Sikeres kijelentkezés!';
}
public function __destruct(){
//do semething
echo 'Bye bye World!';
}
}
Mindezzel véget ért cikksorozatunk második része is - de nem kell csüggedni, a következő részben folytatjuk az elkezdetteket, és szó lesz a láthatóságról, illetve a függvények közé változókat is be fogunk venni az osztályunkba, úgyhogy see you soon!
Hozzászólások
-