⊗ppOpAdPBR 23 of 107 menu

Prosleđivanje objekata po referenci u OOP u PHP-u

Neka nam je dat ovakav klasa User:

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

Neka kreiramo objekat ove klase:

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

Zamislite sada sledeću situaciju: želite vrednost promenljive $user da dodelite nekoj drugoj promenljivoj, na primer $test.

Da nije reč o objektima, već o primitivima, odnosno o stringovima, brojevima, nizovima i sl., onda bi u promenljivu $test otišla kopija vrednosti promenljive $user.

To znači da promene bilo koje od promenljivih ubuduće ne bi menjale vrednost druge promenljive. Pogledajmo na primeru:

<?php $user = 1; $test = $user; // u promenljivoj $test sada je 1 $test = 2; // u promenljivoj $test sada je 2, a u $user - i dalje 1 ?>

Kod objekata je drugačije - pri upisu u drugu promenljivu objekti se ne kopiraju, već se prosleđuju po referenci: to znači, da obe ove promenljive imaju za vrednost jedan te isti objekat. Ovo ima važnu posledicu: ako se promene neka svojstva objekta pomoću jedne promenljive, u drugoj promenljivoj pojaviće se te iste promene.

Pogledajmo u praksi. Kreirajmo objekat sa korisnikom:

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

Dodelimo objekat drugoj promenljivoj:

<?php $test = $user; ?>

Promenimo svojstvo name u promenljivoj $test

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

Proverimo da li se promenio zajednički objekat. Ispišimo svojstvo name iz promenljive $user:

<?php echo $user->name; // ispisaće 'eric'! ?>

Napravite klasu Product, u kojoj će biti sledeća svojstva: name, price.

Kreirajte objekat klase Product, zapišite ga u promenljivu $product1.

Dodelite vrednost promenljive $product1 u promenljivu $product2. Proverite da li obe promenljive referenciraju na jedan te isti objekat.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij