Po pierwsze, przepraszam za głupie pytanie, ale czytałem artykuł w numerze php.net i nie mogłem zrozumieć, co dokładnie mówi.Przypisanie obiektów w PHP
<?php
class SimpleClass
{
// property declaration
public $var = 'a default value';
// method declaration
public function displayVar() {
echo $this->var;
}
}
?>
<?php
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
I wyprowadza to:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$assigned will have this value"
}
$ i $ instancja punkt odniesienia do tego samego miejsca, mam to i rozumiem, dlaczego mamy NULL NULL dla nich.
Ale co z przypisanym $? To także wskazuje miejsce przechowywania instancji $? Dlaczego, gdy używamy $instance->var
wpływa na $ przypisane, ale gdy ustawimy $ instance na wartość null, nie ma zmiany dla $ przypisane?
Pomyślałem, że wszystkie trzy zmienne wskazują jedno miejsce w pamięci, ale oczywiście jestem w błędzie. Czy mógłbyś mi wyjaśnić, co dokładnie się dzieje i co jest przypisane $? Dziękuję Ci bardzo!
Masz kod swojej SimpleClass? – user978122
Klasy są odniesieniami w większości przypadków. W PHP nie ma jednak struktury. –
@AlvinWong, IIRC nie jest prawdą przed PHP5 –