⊗ppOpAdPBR 23 of 107 menu

Preklad objektov odkazom v OOP v PHP

Nech je nám daná takáto trieda User:

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

Nech vytvárame objekt tejto triedy:

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

Predstavte si teraz nasledujúcu situáciu: vy chcete hodnotu premennej $user priradiť nejakej inej premennej, napríklad $test.

Ak by sa nejednalo o objekty, ale o primitívne typy, teda o reťazce, čísla, polia atď., potom by do premennej $test prišla kópia hodnoty premennej $user.

To znamená, že zmeny akejkoľvek premennej by v budúcnosti nemenili hodnotu druhej premennej. Pozrime sa na príklad:

<?php $user = 1; $test = $user; // v premennej $test je teraz 1 $test = 2; // v premennej $test je teraz 2, ale v $user - stále 1 ?>

S objektami je to inak - pri zápise do iných premenných sa objekty nekopírujú, ale prenášajú sa odkazom: to znamená, že obe tieto premenné majú hodnotou jeden a ten istý objekt. Má to dôležitý dôsledok: ak sa zmenia nejaké vlastnosti objektu pomocou jednej premennej, v druhej premennej sa objavia tie isté zmeny.

Pozrime sa na to v praxi. Vytvorme objekt s používateľom:

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

Priraďme objekt do inej premennej:

<?php $test = $user; ?>

Zmeňme vlastnosť name v premennej $test

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

Skontrolujme, či sa zmenil spoločný objekt. Vypíšme vlastnosť name z premennej $user:

<?php echo $user->name; // vypíše 'eric'! ?>

Vytvorte triedu Product, v ktorej budú nasledujúce vlastnosti: name, price.

Vytvorte objekt triedy Product, zapíšte ho do premennej $product1.

Priraďte hodnotu premennej $product1 do premennej $product2. Skontrolujte, že obe premenné odkazujú na jeden a ten istý objekt.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť