⊗ppOpAdPBR 23 of 107 menu

PHP да ООПда объектларга reference орқали ўтказиш

Фарз қилайлик, бизда 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 қолади ?>

Объектлар билан бошқача - иккинчи ўзгарувчига ёзганда объектлар нусхаланмайди, балки reference орқали ўтказилади: бунинг маъноси, бу икки ўзгарувчининг қиймати битта ва худди шу объектдир. Бу мухим оқибатга эга: агар объектнинг қандайдир хоссаларини бирор ўзгарувчи ёрдамида ўзгартирилса, иккинчи ўзгарувчида худди шу ўзгаришлар пайдо бўлади.

Келиб, амалиётда кўриб чиқайлик. Фойдаланувчи билан объект яратайлик:

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

Объектни бошқа ўзгарувчига тенглаштирамиз:

<?php $test = $user; ?>

$test ўзгарувчисида name хоссасини ўзгартирамиз

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

Келиб, умумий объект ўзгарганини текшириб кўрамиз. $user ўзгарувчисидан name хоссасини чиқарайлик:

<?php echo $user->name; // 'eric' чиқади! ?>

Product классни яратинг, унда куйидаги хоссалар бўлсин: name, price.

Product классидан объект яратиб, уни $product1 ўзгарувчисига ёзинг.

$product1 ўзгарувчисининг қийматини $product2 ўзгарувчисига тенглаштиринг. Иккала ўзгарувчи ҳам битта объектга ишорат қилаётиганини текшириб кўринг.

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш