⊗ppOpAdPBR 23 of 107 menu

Objektumok referenciával történő átadása OOP-ben PHP-ben

Tegyük fel, hogy a következő User osztályunk van:

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Tegyük fel, hogy létrehozunk egy objektumot ebből az osztályból:

<?php $user = new User('john', 30); ?>

Képzeljük el a következő helyzetet: a $user változó értékét szeretnénk hozzárendelni egy másik változóhoz, például a $test változóhoz.

Ha nem objektumokról, hanem primitívekről lenne szó, azaz sztringekről, számokról, tömbökről stb., akkor a $test változóba a $user változó értékének másolata kerülne.

Ez azt jelenti, hogy bármelyik változó módosítása a későbbiekben nem változtatná meg a másik változó értékét. Nézzük meg egy példán:

<?php $user = 1; $test = $user; // a $test változóban most 1 van $test = 2; // a $test változóban most 2 van, a $user-ben viszont továbbra is 1 ?>

Az objektumokkal más a helyzet - egy másik változóba való beírásakor az objektumok nem másolódnak, hanem referenciával adódnak át: ez azt jelenti, hogy mindkét változó értéke ugyanaz az objektum. Ennek fontos következménye van: ha megváltoztatjuk az objektum egyes tulajdonságait az egyik változóval, akkor a második változóban is megjelennek ezek a változások.

Nézzük meg a gyakorlatban. Hozzunk létre egy objektumot egy felhasználóval:

<?php $user = new User('john', 30); ?>

Rendeljük hozzá az objektumot egy másik változóhoz:

<?php $test = $user; ?>

Változtassuk meg a name tulajdonságot a $test változóban

<?php $test->name = 'eric'; ?>

Ellenőrizzük, hogy megváltozott-e a közös objektum. Írjuk ki a name tulajdonságot a $user változóból:

<?php echo $user->name; // kiírja 'eric'-et! ?>

Készítsen egy Product osztályt, amelyben a következő tulajdonságok lesznek: name, price.

Hozzon létre egy objektumot a Product osztályból, írja be a $product1 változóba.

Rendelje a $product1 változó értékét a $product2 változóhoz. Ellenőrizze, hogy mindkét változó ugyanarra az objektumra hivatkozik.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás