⊗ppOpAdPBR 23 of 107 menu

PHP da OOP da obyektlarni havola orqali uzatish

Faraz qilaylik, bizda quyidagi User klassi mavjud:

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

Faraz qilaylik, biz ushbu klassning obyektini yaratamiz:

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

Endi quyidagi vaziyatni tasavvur qiling: siz $user o'zgaruvchisining qiymatini boshqa bir o'zgaruvchiga, masalan $test ga tayinlamoqchisiz.

Agar gap obyektlar haqida emas, balki primitivlar haqida bo'lsa, ya'ni satrlar, raqamlar, massivlar va h.k. bo'lsa, $test o'zgaruvchisiga $user o'zgaruvchisining qiymati nusxasi o'tadi.

Bu shuni anglatadiki, keyinchalik har qanday o'zgaruvchining o'zgartirilishi boshqa o'zgaruvchining qiymatini o'zgartirmaydi. Keling, misolni ko'rib chiqaylik:

<?php $user = 1; $test = $user; // $test o'zgaruvchida endi 1 $test = 2; // $test o'zgaruvchida endi 2, $user da esa hali ham 1 ?>

Obyektlar bilan hamma narsa boshqacha - ular boshqa o'zgaruvchiga yozilganda nusxalanmaydi, balki havola orqali uzatiladi: bu shuni anglatadiki, bu ikkala o'zgaruvchining qiymati bir xil obyektga ega. Buning muhim oqibati bor: agar obyektning ba'zi xususiyatlarini bitta o'zgaruvchi yordamida o'zgartirsangiz, ikkinchi o'zgaruvchida ham xuddi shu o'zgarishlar paydo bo'ladi.

Keling, amalda ko'rib chiqaylik. Foydalanuvchi bilan obyekt yaratamiz:

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

Obyektni boshqa o'zgaruvchiga tayinlaymiz:

<?php $test = $user; ?>

name xususiyatini $test o'zgaruvchida o'zgartiramiz

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

Keling, umumiy obyekt o'zgarganligini tekshiramiz. name xususiyatini $user o'zgaruvchidan chiqaramiz:

<?php echo $user->name; // 'eric' chiqadi! ?>

Product klassini yarating, unda quyidagi xususiyatlar bo'lsin: name, price.

Product klassining obyektini yarating, uni $product1 o'zgaruvchisiga yozing.

$product1 o'zgaruvchisining qiymatini $product2 o'zgaruvchisiga tayinlang. Ikkala o'zgaruvchi ham bir xil obyektga ishora qilishini tekshiring.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish