⊗ppOpAdPBR 23 of 107 menu

Objektu nodošana pa norādi OOP PHP

Pieņemsim, ka mums ir dots šāds klase User:

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

Pieņemsim, ka mēs veidojam šīs klases objektu:

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

Iedomājieties šādu situāciju: jūs vēlaties mainīgā $user vērtību piešķirt kādam citam mainīgajam, piemēram $test.

Ja runa būtu nevis par objektiem, bet par primitīviem tipiem, tas ir, par virknēm, skaitļiem, masīviem utt., tad mainīgajā $test nonāktu mainīgā $user vērtības kopija.

Tas nozīmē, ka izmaiņas jebkurā no mainīgajiem tālāk nemainītu otra mainīgā vērtību. Apskatīsim piemērā:

<?php $user = 1; $test = $user; // mainīgajā $test tagad ir 1 $test = 2; // mainīgajā $test tagad ir 2, bet $user - joprojām 1 ?>

Ar objektiem ir savādāk - piešķirot citam mainīgajam, objekti netiek kopēti, bet tiek nodoti pa norādi: tas nozīmē, ka abiem šiem mainīgajiem par vērtību ir viens un tas pats objekts. Tam ir svarīgas sekas: ja maina kādas objekta īpašības ar viena mainīgā palīdzību, otrajā mainīgajā parādīsies šīs pašas izmaiņas.

Apskatīsim praksē. Izveidosim objektu ar lietotāju:

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

Piešķirsim objektu citam mainīgajam:

<?php $test = $user; ?>

Mainīsim īpašību name mainīgajā $test

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

Pārbaudīsim, vai mainījās kopīgais objekts. Izvadīsim īpašību name no mainīgā $user:

<?php echo $user->name; // izvadīs 'eric'! ?>

Izveidojiet klasi Product, kurā būs šādas īpašības: name, price.

Izveidojiet klases Product objektu, ierakstiet to mainīgajā $product1.

Piešķiriet mainīgā $product1 vērtību mainīgajā $product2. Pārbaudiet to, ka abi mainīgie norāda uz vienu un to pašu objektu.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt