Τι κάνουν οι αναφορές
Οι αναφορές στην PHP σας επιτρέπουν να κάνετε δυο μεταβλητές να αναφέρονται στο ίδιο περιεχόμενο. Δηλαδή, όταν γράφετε:
<?php
$a =& $b
?>
Note: Η $a και η $b είναι τελείως ίσες εδώ, αφού η $a δεν δείχνει στην $b ή αντιστρόφως, αλλά τόσο η $a όσο και η $b δείχνουν στο ίδιο μέρος.
Η ίδια σύνταξη μπορεί να χρησιμοποιηθεί με συναρτήσεις, οι οποίες επιστρέφουν αναφορές, και με τον τελεστή new (στην PHP 4.0.4 και μετά):
<?php
$bar =& new fooclass();
$foo =& find_var ($bar);
?>
Note: Η μη χρήση του τελεστή & δημιουργεί ένα αντίγραφο του αντικειμένου που θα γίνει. Αν χρησιμοποιείτε το $this σε μια κλάση, αυτό θα ενεργήσει πάνω στο τρέχον στιγμιότυπο (instance) της κλάσης. Η ανάθεση χωρίς το & θα αντιγράψει το στιγμιότυπο (π.χ. το αντικείμενο) και το $this θα ενεργήσει σ' αυτό το αντίγραφο, το οποίο δεν είναι το επιθυμητό. Συνήθως θέλετε να έχετε ένα μόνο στιγμιότυπο να δουλεύετε, εξαιτίας θεμάτων απόδοσης και κατανάλωσης μνήμης.
Ενώ μπορείτε να χρησιμοποιείτε τον τελεστή @ για να σταματάτε (mute) λάθη στον constructor, όταν το χρησιμοποιείτε ως @new, δε θα δουλέψει όταν κάνετε χρήση και της δήλωσης &new. Αυτό είναι ένας περιορισμός της Zend Engine και συνεπώς θα καταλήξει σε λάθος του μεταγλωττιστή.
Το δεύτερο πράγμα που κάνουν οι αναφορές είναι να περνάνε μεταβλητές με αναφορά (by-reference). Αυτό γίνεται δημιουργώντας μια τοπική μεταβλητή σε μια συνάρτηση και μια μεταβλητή με εμβέλεια τέτοια ώστε να μπορούμε να την καλέσουμε, και η οποία αναφέρεται στο ίδιο περιεχόμενο. Για παράδειγμα:
<?php
function foo (&$var)
{
$var++;
}
$a=5;
foo ($a);
?>
Το τρίτο πράγμα που κάνουν οι αναφορές είναι η επιστροφή με αναφορά (return by reference).