$instance2
nesne testine tanımlayıcı bir kopyası vardır:
$a = new stdClass();
$a->name = "A";
$b = new stdClass();
$b->name = "B";
// $x is a copy of the object identifier in $a
$x = $a;
// $y is a reference to $a
$y = &$a;
// this will not affect $a
$x = $b;
echo $a->name; // 'A'
// this will affect $a
$y = $b;
echo $a->name; // 'B'
da (ve işareti) referansların kullanımından kaçınılmalıdır neden bu makaleye bakın. Yani,
$instance1
ile aynı içerir.
$instance3
,
$instance1
için bir başvuru içerir. Fark şu olacaktır:
$instance1
yerine
$instance3
ait değiştirilmişse aynı çıkış iade edileceği
$instance1 = new Test();
$instance2 = $instance1;
$instance3 = & $instance1;
var_dump($instance1 instanceof Test); // True
var_dump($instance2 instanceof Test); // True
var_dump($instance3 instanceof Test); // True
$instance3 = new AnotherTest();
var_dump($instance1 instanceof AnotherTest); // True
var_dump($instance2 instanceof AnotherTest); // False
var_dump($instance3 instanceof AnotherTest); // True
.
Ama şu yapsam: Yani
$instance1 = new Test();
$instance2 = $instance1;
$instance3 = & $instance1;
$instance2 = new AnotherTest();
var_dump($instance1 instanceof AnotherTest); // False
var_dump($instance2 instanceof AnotherTest); // True
var_dump($instance3 instanceof AnotherTest); // False
: (&
işlenen kullanarak) referans olarak oluşturulan geçti edilmiş bir değişken wich
Değişiklik veya başvurduğu kurup kurmadığını değişkenin Kopyalanan bir değişkenin değiştirilmesi sadece verilen değişkeni değiştirirken, her ikisini de değiştirir.
Yine, ne tutar böylece, nesnenin bir tanımlayıcı olan $instance1
unutmamak gerekir:
$instance1 = new StdClass();
$instance2 = $instance1;
$instance1->my_property = 1;
var_dump($instance2); // Output: 1
artık daha açık Umut.
Örnekler anlamlıdır, ancak 'işaretçi' sözcüğünü PHP'de kullanmamalısınız. –
"Poitner" kelimesini kullandım çünkü aralarındaki temel farklar, motorun bunları nasıl işlediğidir. Bunu nasıl farklı ifade edeceğimi bilemedim. – Lumbendil
Doğru terim, nesne tanımlayıcısıdır: http://php.net/manual/en/language.oop5.references.php –