PHP-osztályok és -objektumok (3.)

PHP-osztályok és -objektumok (3.)

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 "protected" tulajdonságokat honnan tudjuk elérni?
1. Bárhonnan hozzájuk lehet férni.
2. Csak az osztályon belülről vagy az osztályból származtatott osztályokból.
3. Csak az őket meghatározó osztályon belülről.
 

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.

Szeretne értesülni, ha új cikk jelenik meg Számtek rovatunkban? Iratkozzon fel értesítőnkre!

E-mailben értesíteni fogjuk Önt az új cikkekről. Feliratkozáshoz kérjük adja meg a nevét és az e-mail címét.

Hozzászólások

Kapcsolódó cikkek

PHP-osztályok és -objektumok (3.)
Számtek
PHP-osztályok és -objektumok (3.)
Számtek
  • Erdsoft
  • 2019.10.17.
  • LXXIV. évfolyam 42. szám
Facebook

Támogatóink