⊗ppOpAdPBR 23 of 107 menu

Objektide edastamine viidete kaudu OOP-s PHP-s

Oletame, et meil on antud järgmine klass User:

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

Oletame, et loome selle klassi objekti:

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

Kujutage nüüd ette järgmist olukorda: te soovite muutuja $user väärtuse omistada mõnele teisele muutujale, näiteks $test.

Kui tegemist poleks objektidega, vaid primitiividest, st stringide, arvude, massiivide jms, siis muutujasse $test saaks muutuja $user väärtuse koopia.

See tähendab, et ühegi muutuja muutmine edaspidi ei muudaks teise muutuja väärtust. Vaatame näidet:

<?php $user = 1; $test = $user; // muutujas $test on nüüd 1 $test = 2; // muutujas $test on nüüd 2, kuid $user-s on endiselt 1 ?>

Objektidega on teisiti - teise muutuja omistamisel objekte ei kopeerita, vaid edastatakse viite kaudu: see tähendab, et mõlemal muutujal on väärtusena üks ja sama objekt. Sellel on oluline tagajärg: kui muuta mõnda objekti omadust ühe muutuja abil, siis teises muutujas ilmuvad need samad muutused.

Vaatame praktikas. Loome kasutajaga objekti:

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

Omistame objekti teise muutuja:

<?php $test = $user; ?>

Muudame omadust name muutujas $test

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

Kontrollime, kas ühine objekt on muutunud. Väljastame omaduse name muutujast $user:

<?php echo $user->name; // väljastab 'eric'! ?>

Tehke klass Product, milles on järgmised omadused: name, price.

Looge klassi Product objekt, kirjutage see muutujasse $product1.

Omistage muutuja $product1 väärtus muutujasse $product2. Kontrollige seda, et mõlemad muutujad viitavad ühele ja samale objektile.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu