Örnek kodunuz PHP değil, ancak, korumalı bir değişkene bir başvuru döndürdüğünüzde, bu başvuruyu sınıfın kapsamı dışındaki verileri değiştirmek için kullanabilirsiniz. Burada bir örnek verilmiştir:
<?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 yürütüldüğünde, print_r()
sonuç $testObj->fooInstance
saklanan veriler $testObj->barReference
depolanan referans kullanarak değiştirilmiş olduğu gösterir. Bununla birlikte, yakalama, fonksiyonun referans ile geri dönüş olarak tanımlanması gerektiğidir VE çağrı aynı zamanda bir referans talep etmelidir. Onlara ihtiyacın var! İşte o PHP kılavuzun dışarı ilgili sayfa var:
http://www.php.net/manual/en/language.references.return.php
böyle yapıyorsun neden yardım ancak merak ediyorum, ya da hatta iyi bir fikir olup olmadığını ... –
Bağışlayın ama kullanımı Bir kamu değişkeni ve korunan bir değişkene "kesmek" ihtiyacını kaybeder mi? Yaptığınız şey oldukça kötü bir fikir gibi görünüyor ... Belki de neyi başarmaya çalıştığınızı daha çok anlatırsanız, bunun hakkında iyi bir yol bulabiliriz ... –
Bu, ihtiyacım olan çok özel bir durumdur. Bu özelliğe erişmek için (db'nin flatfile içeriğiyle ilgili olarak normalleştirilmesi için). Diğer 99/100 kez bu özellik erişilebilir, özel olmak daha iyidir. – Karan