As said before, references aren't pointers. That means, the
following construct won't do what you expect:
What happens is that $var in
foo will be bound with
$bar in caller, but then it will be
re-bound with $GLOBALS["baz"]. There's no way
to bind $bar in the calling scope to something else
using the reference mechanism, since $bar is not
available in the function foo (it is represented by
$var, but $var has only
variable contents and not name-to-value binding in the calling
symbol table).
You can use returning
references to reference variables selected by the function.