Ustvarjanje reference znotraj konstruktorja lahko pripelje do čudnih rezultatov. Naslednje informacije vam bodo pomagale izogniti se temu problemu.
class Foo |
Pa poglejmo, če je razlika med $bar1, ki je bila ustvarjena z = opratorjem in $bar2, ki je bila ustvarjena z referenčnim operatorjem =& ...
$bar1 = new Foo('nastavljen v konstruktorju'); |
Na pogled ni razlike, vedar obstaja ena zelo pomembna: $bar1 in $globalref[0] _NISTA_ referenčni in ista isti spremenljivki. To je zato, ker "new" ne vrne reference, ampak vrne kopijo.
Opomba: Nič ne izgubimo na hitrosti (od PHP 4 naprej, uporablja štetje referenc), če uporabljamo kopije namesto referenc. Prav nasprotno, ponavadi je bolje preprosto delati z kopijami, ker ustvarjanje referenc traja nekaj časa, za ustvarjanje kopije pa ne porabimo praktično nič časa (razen, če je to kaksna velika tabela ali objekt in spreminjamo enega za drugim, kjer bi bilo pametneje uporabiti referenco, kjer bi spremenili vse hkrati).
// sedaj bomo zamenjali name. Kaj pricakujete? |
Še en primer, poskusite ga razumeti.
class A |