TGViewer
UzDevid UzDevid @uzdevid · 4.37K subscribers
Post #355 8.65K
PHP-da funksiyalar obyektlarni qanday qabul qilishi (qiymat bo‘yicha yoki havola bo‘yicha) dasturdagi o‘zgaruvchilar bilan ishlash uslubini belgilaydi. Obyektlar va oddiy ma'lumot turlari bilan ishlashda farqlar mavjud. Keling, obyektlar funksiyaga qanday uzatilishini qisqacha ko‘rib chiqamiz.

Obyektlarni qiymat va havola bo‘yicha uzatish

PHP-da oddiy ma'lumot turlari (masalan, integer, string, array) funksiyaga qiymat bo‘yicha uzatiladi. Bu shuni anglatadiki, o‘zgaruvchining nusxasi funksiyaga yuboriladi, va funksiyada o‘zgarishlar asl o‘zgaruvchiga ta'sir qilmaydi. Ammo obyektlar bilan ishlaganda bu jarayon boshqacha ishlaydi. PHP 5-dan boshlab obyektlar havola bo‘yicha uzatiladi, bu esa obyektga to‘g‘ridan-to‘g‘ri kirish imkonini beradi.

Obyektlarni havola bo‘yicha uzatish

Obyektlar PHP-da funksiyaga havola bo‘yicha uzatiladi. Bu shuni anglatadiki, funksiya obyektning manziliga murojaat qiladi va o‘zgarishlar to‘g‘ridan-to‘g‘ri asl obyektga ta'sir qiladi. Masalan, funksiyada obyektning biror xususiyati o‘zgartirilsa, bu o‘zgarish asl obyektga ham ta'sir qiladi.

class Product {
public $price = 100;
}

function changePrice($item) {
$item->price = 200;
}

$product = new Product();
changePrice($product);
echo $product->price; // Result: 200


Bu yerda $product obyektini funksiyaga uzatganda, obyektning manzili uzatiladi. Shuning uchun funksiya ichida xususiyat o‘zgarishi asl obyektga ta’sir ko‘rsatadi.

Obyektlarni klonlash va nusxa qilib uzatish

Ba’zi hollarda obyektning asl qiymatini saqlab qolish kerak bo‘ladi. Bunday hollarda obyektni funksiyaga yuborishdan oldin klonlash orqali nusxa yaratish mumkin. Buning uchun clone operatoridan foydalaniladi.

class Product {
public $price = 100;
}

function changePrice($item) {
$item->price = 200;
}

$product = new Product();
$clonedProduct = clone $product;
changePrice($clonedProduct);
echo $product->price; // Result: 100
echo $clonedProduct->price; // Result: 200


Bu misolda $clonedProduct obyektning nusxasi sifatida yaratiladi va funksiya bu nusxani o‘zgartirsa ham, asl $product obyektining qiymati saqlanib qoladi.

Qiymat va havola bo‘yicha uzatish o‘rtasidagi farq

- Qiymat bo‘yicha uzatishda obyektning nusxasi uzatiladi, bu esa asl obyektga ta’sir qilmaydi.
- Havola bo‘yicha uzatishda esa obyektning manzili uzatiladi va funksiyadagi o‘zgarishlar obyektning asl qiymatiga ta’sir ko‘rsatadi.

Xulosa

PHP-da obyektlar avtomatik ravishda havola bo‘yicha uzatiladi, ya'ni funksiyalar obyektning asl qiymatini o‘zgartirishi mumkin. Agar funksiyaga uzatilgan obyektning asl qiymati o‘zgarishini istamasangiz, uni clone yordamida nusxalash mumkin. Bu tushunchalar kodni optimallashtirishda va obyektlar bilan ishlashda muhim rol o‘ynaydi, shuningdek, PHP dasturlarini to‘g‘ri tushunib yozishga yordam beradi.

@uzdevid
  • 👍 14
  • 👏 3
  • ❤ 1
  • 🔥 1
More from @uzdevid
  1. Sep 24, 2026Kim nima desa desin, confluxga baza bilan ishlash uchun drayver qo'shdim. DataGrip analogi…
  2. Sep 22, 2026Opus 5.5 chiqdi, limitlarni reset qilish ham mumkin ekan, menga o'xshab 20%-da emas, 99%-d…
  3. Sep 22, 2026chiqaramiz nasib )) @uzdevid
  4. Sep 22, 2026Xa aytganchi, keyingi oyda macOS uchun ham chiqaramiz. Qo'llab-quvvatlash uchun: https://t…
  5. Sep 22, 2026Conflux 0.7.0 reliz qilindi. O'zgarishlar: - bug-lar to'g'rilandi - request-larni sozlash…
  6. Sep 19, 2026Til endi to'siq emas. Raya platformasida yangi imkoniyat. Kompyuteringizdan chiqayotgan ha…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →