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.
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!