Referencji zachowanie osobliwe
26 Oct 2005
Być to może ktoś już miał podobną zagwózdkę. Gdy nie, może ustrzeże go to przed stratą mnóstwa czasu.
$ php
<?PHP
class Cos {
function __toString() {
return get_class(&$this)."\n";
}
}
class Cos1 extends Cos {}
class Cos2 extends Cos {}
$a = new Cos1();
$b = new Cos2();
$out1 = &$a;
$out2 = &$out1;
echo $out2->__toString();
$out1 = &$b; // *
echo $out2->__toString();
?>
^D
Cos1
Cos1
It's not a bug, it's a feature. Z powyższego przykładu wynikają rzeczy następujące
- Przypisanie referencyjne do referencji powoduje natychmiastową propagację aż do ostatniej zmiennej w całym łańcuchu referencji.
- Wykonywanie przypisania referencyjnego na zmiennej, która kryje w sobie referencję powoduje zmianę celu tej referencji a nie obiektu referowanego (wiersz oznaczony gwiazdką)
Zachowanie jest identyczne w Zend Engine 1 oraz 2.
- Jajcus
Chory język. Coraz bardziej się o tym przekonuję.







