Az osztályokról és az objektumokról szóló leckecsoportunk utolsó részéhez érkeztünk. Eddig már sok mindent megtanulhattál az objektumorientált programozásról — az alapdefiníciótól kezdve a konstruktorokon és a destruktorokon át egészen az örökítésig.
Mai leckénkben még egy lépéssel tovább haladunk, és bemutatjuk a tulajdonságok, módszerek láthatóságát, valamint a statikus tulajdonságokkal és módszerekkel is megismerkedhetsz.
A tulajdonságok és módszerek láthatóságának kontrollálása
Amikor az osztályokkal dolgozunk, megtagadhatjuk a hozzáférést a tulajdonságaikhoz és módszereikhez a láthatósági kulcsszavak segítségével, melyek lehetővé teszik a nagyobb kontrollt. Három ilyen kulcsszó létezik (a legmagasabb fokú láthatóságtól a legalacsonyabb fokú láthatóságig): public, protected és private. A kulcsszavak azt határozzák meg, hogyan és honnan érhetőek el, illetve módosíthatóak a tulajdonságok és a módszerek.
- public — A publikus tulajdonsághoz vagy módszerhez bárhonnan hozzá lehet férni, az osztályon belül és kívül is. A PHP-ben ez az osztály minden tagjának alapbeállított láthatósága.
- protected — A protected, azaz a védett tulajdonság vagy módszer csak az osztályon belülről vagy az osztályról örökített, osztályból származtatott osztályokból érhető el.
- private — A privát tulajdonság vagy módszer csak az őt meghatározó osztályon belülről érhető el. A privát tulajdonságokat vagy módszereket a gyermek vagy örökített osztályok sem tudják elérni.
Alábbi példánk bemutatja, hogyan működik a láthatóság a gyakorlatban.
PHP-kód:
<?php
// Osztály definiálása
class Automobile
{
// Tulajdonságok deklarációja
public $fuel;
protected $engine;
private $transmission;
}
class Car extends Automobile
{
// Konstruktor
public function __construct() {
echo 'A "' . __CLASS__ . '" osztály létrejött!<br />';
}
}
// Objektum létrehozása az Automobile osztályból
$automobile = new Automobile();
// Próbálkozás az $automobile objektum tulajdonságainak beállítására
$automobile->fuel = 'Petrol'; // ok
$automobile->engine = '1500 cc'; // fatal error
$automobile->transmission = 'Manual'; // fatal error
// Objektum létrehozása a Car osztályból
$car = new Car();
// Próbálkozás a $car objektum tulajdonságainak beállítására
$car->fuel = 'Diesel'; // ok
$car->engine = '2200 cc'; // fatal error
$car->transmission = 'Automatic'; // meghatározatlan
?>
Statikus tulajdonságok és módszerek
A láthatóság beállítása mellett a tulajdonságok és a módszerek statikusak is lehetnek (static), amitől anélkül válhatnak elérhetővé, hogy szükség lenne a példányosításra. A statikus tulajdonságok és módszerek a :: operátor segítségével érhetőek el, a következő módon: ClassName::$property és ClassName::method().
A statikussá nyilvánított tulajdonságokhoz nem tudunk hozzáférni az osztály objektumain keresztül, a statikus módszerhez viszont hozzáférhetünk, ahogyan azt az alábbi példa is illusztrálja:
PHP-kód:
<?php
// Az osztály definiálása
class HelloClass
{
// Statikus tulajdonság deklarálása
public static $greeting = 'Hello World!';
// Statikus módszer deklarálása
public static function sayHello() {
echo self::$greeting;
}
}
// Próbálkozás a statikus tulajdonsághoz és módszerhez való közvetlen hozzáférésre
echo HelloClass::$greeting; // Megjelenítés: Hello World!
HelloClass::sayHello(); // Megjelenítés: Hello World!
// Próbálkozás a statikus tulajdonsághoz és módszerhez való hozzáférésre egy objektumon keresztül
$hello = new HelloClass();
echo $hello->greeting; // Strict Warning
$hello->sayHello(); // Megjelenítés: Hello World!
?>
A self kulcsszó a fenti példában azt jelenti, hogy a „jelenlegi osztályról” van szó. A self kulcsszó előtt soha nem szerepel dollárjel ($) és mindig a :: operátor követi (például: self::$name).
A self kulcsszó nem összetévesztendő a this kulcsszóval, mely azt jelenti, hogy „a jelenlegi objektum” vagy „az osztály jelenlegi példánya”. A this kulcsszót mindig a dollárjel ($) előzi meg és a -> operátor követi (például: $this->name).
Fontos megjegyzés: Mivel a statikus módszerek lehívhatóak az osztály példánya (objektuma) nélkül is, a $this pszeudováltozó nem érhető el a statikussá nyilvánított módszeren belül.
Összegzés:
Mai leckénk segítségével még tovább bővíthetted az objektumorientált programozással kapcsolatos tudásodat. Megismerkedhettél a láthatóság fogalmával, és bemutattuk a statikus objektumokat, illetve tulajdonságokat is. Reméljük, hogy a rövid OOP-kurzusunk alatt sikerült megértened a koncepció alapjait. Ha igen, akkor már csak annyi maradt hátra, hogy kitartóan gyakorolj, hiszen PHP-programozói pályafutásod során biztosan sokszor veszed majd hasznát a most tanult dolgoknak. A jövő héten újabb témát dolgozunk majd fel, tarts velünk akkor is!
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:
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.