⊗ppOpAdPBR 23 of 107 menu

Пренос објеката референцом у ООП у PHP

Претпоставимо да имамо следећу класу User:

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

Претпоставимо да креирамо објекат ове класе:

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

Замислите сада следећу ситуацију: желите вредност променљиве $user доделити некој другој променљивој, на пример $test.

Ако се није радило о објектима, већ о примитивима, односно о стринговима, бројевима, низовима и сл., тада би у променљиву $test отишла копија вредности променљиве $user.

То значи да промене било које променљиве у даљем току не би мењале вредност друге променљиве. Погледајмо на примеру:

<?php $user = 1; $test = $user; // у променљивој $test сада имамо 1 $test = 2; // у променљивој $test сада имамо 2, а у $user - и даље 1 ?>

Са објектима је другачије - при упису у другу променљиву објекти се не копирају, већ се преносе референцом: то значи, да обе те променљиве као вредност имају исти објекат. Ово има важну последицу: ако промените нека својства објекта помоћу једне променљиве, у другој променљивој ће се појавити исте промене.

Да видимо на пракси. Креирајмо објекат са корисником:

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

Доделимо објекат другој променљивој:

<?php $test = $user; ?>

Променимо својство name у променљивој $test

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

Да проверимо да ли се променио заједнички објекат. Испишимо својство name из променљиве $user:

<?php echo $user->name; // исписаће 'eric'! ?>

Направите класу Product, у којој ће бити следећа својства: name, price.

Креирајте објекат класе Product, уписати га у променљиву $product1.

Доделите вредност променљиве $product1 променљивој $product2. Проверите да ли обе променљиве реферишу на исти објекат.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј