⊗ppOpAdPBR 23 of 107 menu

Objektų perdavimas nuoroda OOP PHP

Tarkime, kad turime šią User klasę:

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

Tarkime, sukuriame šios klasės objektą:

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

Dabar įsivaizduokite tokią situaciją: norite priskirti kintamojo $user reikšmę kitam kintamajam, pavyzdžiui $test.

Jei kalbėtume ne apie objektus, o apie primitivus, tai yra apie eilutes, skaičius, masyvus ir pan., tada į kintamąjį $test patektų kintamojo $user reikšmės kopija.

Tai reiškia, kad vėlesni bet kurio kintamojo pakeitimai nekeistų kito kintamojo reikšmės. Pažiūrėkime pavyzdį:

<?php $user = 1; $test = $user; // kintamajame $test dabar yra 1 $test = 2; // kintamajame $test dabar yra 2, o $user - vis tiek 1 ?>

Su objektais viskas kitaip - priskiriant kitam kintamajam objektai nekopijuojami, o perduodami nuoroda: tai reiškia, kad abu šie kintamieji turi tą patį objektą kaip reikšmę. Tai turi svarbią pasekmę: jei keičiamos kokios nors objekto savybės naudojant vieną kintamąjį, antrajame kintamajame atsiras tie patys pakeitimai.

Pažiūrėkime praktiškai. Sukurkime vartotojo objektą:

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

Priskirkime objektą kitam kintamajam:

<?php $test = $user; ?>

Pakeiskime savybę name kintamajame $test

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

Patikrinkime, ar pasikeitė bendras objektas. Išveskime savybę name iš kintamojo $user:

<?php echo $user->name; // išves 'eric'! ?>

Sukurkite klasę Product, kurioje bus šios savybės: name, price.

Sukurkite Product klasės objektą, įrašykite jį į kintamąjį $product1.

Priskirkite kintamojo $product1 reikšmę kintamajam $product2. Patikrinkite, kad abu kintamieji nurodo tą patį objektą.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti