Peki, örnek kod PHP değil, korumalı bir değişken için bir başvuru döndürmek evet, sen sınıfının kapsam dışında verileri değiştirmek için bu başvuruyu kullanabilirsiniz. İşte bir örnek:
<?php
class foo {
protected $bar;
public function __construct()
{
$this->bar = array();
}
public function &getBar()
{
return $this->bar;
}
}
class foo2 {
var $barReference;
var $fooInstance;
public function __construct()
{
$this->fooInstance = new foo();
$this->barReference = &$this->fooInstance->getBar();
}
}
$testObj = new foo2();
$testObj->barReference[] = 'apple';
$testObj->barReference[] = 'peanut';
?>
<h1>Reference</h1>
<pre><?php print_r($testObj->barReference) ?></pre>
<h1>Object</h1>
<pre><?php print_r($testObj->fooInstance) ?></pre>
Bu kod çalıştırıldığında, print_r () sonuçlarını veri depolanan olduğunu gösterecektir $ testObj-> fooInstance $ testObj-> barReference saklanan referans kullanarak modifiye edilmiştir. Ancak, yakalama fonksiyonu referans ile dönen olarak tanımlanmalıdır VE çağrı da bir referans istemek zorunda olmasıdır. Sen ikisini gerekiyor! İşte bu konuda PHP kılavuzun dışında ilgili sayfası:
http://www.php.net/manual/en/language.references.return.php