⊗ppOpAdPBR 23 of 107 menu

PHP'de OOP'de Nesnelerin Referans ile Aktarımı

Diyelim ki User adında bir sınıfımız var:

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

Diyelim ki bu sınıfın bir nesnesini oluşturuyoruz:

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

Şimdi şu durumu hayal edin: $user değişkeninin değerini başka bir değişkene, örneğin $test'e atamak istiyorsunuz.

Eğer konu nesneler değil de, primitive tipler yani dizeler, sayılar, diziler vb. olsaydı, $test değişkenine $user değişkeninin değerinin bir kopyası giderdi.

Bu, ileride değişkenlerden herhangi birinde yapılan değişikliklerin diğer değişkenin değerini değiştirmeyeceği anlamına gelir. Bir örnekle görelim:

<?php $user = 1; $test = $user; // $test değişkeninde artık 1 var $test = 2; // $test değişkeninde artık 2 var, $user'da ise hala 1 ?>

Nesnelerde durum farklıdır - başka bir değişkene yazıldığında nesneler kopyalanmaz, referans ile aktarılır: bu, her iki değişkenin de aynı nesneyi değer olarak tuttuğu anlamına gelir. Bunun önemli bir sonucu vardır: eğer bir değişkeni kullanarak nesnenin bazı özellikleri değiştirilirse, ikinci değişkende de bu değişiklikler görünecektir.

Pratikte görelim. Bir kullanıcı nesnesi oluşturalım:

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

Nesneyi başka bir değişkene atayalım:

<?php $test = $user; ?>

$test değişkenindeki name özelliğini değiştirelim

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

Ortak nesnenin değiştiğini kontrol edelim. $user değişkenindeki name özelliğini yazdıralım:

<?php echo $user->name; // 'eric' yazdıracak! ?>

Product sınıfını yapın, içinde şu özellikler olsun: name, price.

Product sınıfının bir nesnesini oluşturun, onu $product1 değişkenine yazın.

$product1 değişkeninin değerini $product2 değişkenine atayın. Her iki değişkenin de aynı nesneye referans gösterdiğini kontrol edin.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet