Forum und email

Τι δεν είναι οι αναφορές

Όπως έχει ειπωθεί, οι αναφορές δεν είναι δείκτες. Αυτό σημαίνει ότι, η ακόλουθη δομή δεν θα κάνει αυτό που περιμένετε:

<?php
function foo (&$var)
{
    
$var =& $GLOBALS["baz"];
}
foo($bar); 
?>

Αυτό που συμβαίνει είναι ότι η $var στην foo θα "δεθεί" με την $bar στην κλήση, αλλά τότε θα ξανασυνδεθεί με την $GLOBALS["baz"]. Δεν υπάρχει τρόπος να συνδέσουμε την $bar στην εμβέλεια κλήσης σε κάτι άλλο χρησιμοποιώντας το μηχανισμό με αναφορά, αφού η $bar δεν είναι διαθέσιμη στη συνάρτηση foo (αναπαρίσταται από την $var, αλλά η $var έχει μόνο τα περιεχόμενα της μεταβλητής και όχι σύνδεση ονόματος-με-τιμή στον πίνακα κλήσης συμβόλων).