⊗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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј