A criação de referências em construtores pode gerar resultados confusos. Esta seção tentará ajudá-lo e evitar essas situações.
<?php |
Vamos verificar, abaixo, se há alguma diferença entre
$bar1
, que foi criado usando
operador de cópia =, e
$bar2
que foi criado usando
o operador de referência =& ...
<?php |
Aparentemente não há nenhuma diferença, mas de fato há uma
muito significativa: $bar1
e
$globalref[0]
não se referenciam, elas
NÃO são a mesma variável. Isto acontece porque "new" não
retorna uma referência por default. Ao invés, retorna uma cópia.
Nota: Isto não causa perda de performance (desde que o PHP 4 usa a contagem de referências) retornando copias em vez de referências. Do contrário, isso oferece melhora por simplificar o trabalho com cópias ao invés de referências, porque a criação de referências toma mais tempo enquanto a criação de cópias virtualmente não toma tempo algum (a não ser no caso de grandes arrays ou objetos, onde um deles é modificado e o(s) outro(s) também na seqüência, então é melhor usar referências para mudar todos ao mesmo tempo).
<?php |
E apenas mais um exemplo final. Entenda-o com cuidado.
<?php |
O exemplo acima irá imprimir:
classe A: 10 classe B: 10 classe B: 10 classe A: 11 classe B: 11 classe B: 11 |