⊗ppOpAdPBR 23 of 107 menu

Օբյեկտների փոխանցում հղումով OOP-ում 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 ?>

Օբյեկտների դեպքում այլ է՝ այլ փոփոխականին վերագրելիս օբյեկտները չեն պատճենվում, այլ փոխանցվում են հղումով. սա նշանակում է, որ այդ երկու փոփոխականներն էլ որպես արժեք ունեն մեկ և նույն օբյեկտը: Սա կարևոր հետևանք ունի. եթե օբյեկտի որոշ հատկություններ փոխվեն մեկ փոփոխականի միջոցով, ապա երկրորդ փոփոխականում կհայտնվեն նույն փոփոխությունները:

Տեսնենք գործնականում: Ստեղծենք օբյեկտ user-ով.

<?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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել