Ben bir referans sorun var; örnek benden daha açıklayıcı olmalıdır: P
Ben bir nesneler dizisi ve bir ilişkisel dizi gibi, bir anahtar (dize) yoluyla almak olan bir sınıf vardır:
class Collection {
public $elements;
function __construct() {
$this->elements = array();
}
public function get_element($key) {
foreach($this->elements as $element) {
if ($element->key == $key) {
return $element;
break;
}
}
return null;
}
public function add_element ($element) {
$this->elements[] = $element;
}
}
Sonra ben bir anahtar ve bazı değişkenler ile, (jenerik) bir nesne var:
class Element {
public $key;
public $another_var;
public function __construct($key) {
$this->key = $key;
$this->another_var = "default";
}
}
Şimdi, benim bir koleksiyon oluşturmak:
$collection = new Collection();
$collection->add_element(new Element("test1"));
$collection->add_element(new Element("test2"));
Ve sonra benim "dizisindeki" bulunan bir elementin değişkeni değiştirmeye çalışın:
$element = $collection->get_element("test1");
$element->another_var = "random_string";
echo $collection->get_element("test1")->another_var;
Tamam, çıktı
random_string
bu yüzden benim nesne başvuru modunda $ elemanına geçirilmektedir biliyoruz.
Ama eğer, bunun yerine:
$element = $collection->get_element("test1");
$element = null; //or $element = new GenericObject();
$element->another_var = "bla";
echo $collection->get_element("test1")->another_var;
çıktıdır
default
gibi referans kaybederse.
Peki, sorun ne? Ben elemanın değişkenlere değil elemanın kendisi için başvuruları var?
Herhangi bir fikir?
edit: açıklığa kavuşturmak için, ben başka "değişim" nesne öğesi, ancak dizideki konumunu tutmak istiyorum.
(: Şimdi ben bu şekilde mümkün değil anlamak