⊗ppOpAdPBR 23 of 107 menu

Объекттерди 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 ?>

Объекттер менен башкача - башка өзгөрмөгө жазганда объекттер көчүрүлбөйт, ал эми шилтеме аркылуу берилет: бул мындай дегенди билдирет: бул экөө тең өзгөрмөлөр бир эле объектти маани кылып алышат. Бул маанилүү натыйжага ээ: эгерде объекттин кандайдыр бир касиеттерин бир өзгөрмө менен өзгөртсөңүз, экинчи өзгөрмөдө ошол эле өзгөрүүлөр пайда болот.

Келгиле, иш жүзүндө көрөлү. Колдонуучу менен объект түзөлү:

<?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हिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어LietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу