What References Do
PHP references allow you to make two variables to refer to
the same content. Meaning, when you do:
<?php
$a =& $b
?>
it means that $a and $b point to the same variable.
Note: $a and $b are completely equal here, that's not $a
is pointing to $b or vice versa, that's $a and $b pointing
to the same place.
The same syntax can be used with functions, that return
references, and with new operator (in PHP 4.0.4 and later):
<?php
$bar =& new fooclass();
$foo =& find_var ($bar);
?>
Note: Not using the & operator causes a copy of the
object to be made. If you use $this in the class it will
operate on the current instance of the class. The assignment
without & will copy the instance (i.e. the object) and
$this will operate on the copy, which is not always what
is desired. Usually you want to have a single instance to
work with, due to performance and memory consumption issues.
While you can use the @ operator to mute any errors in
the constructor when using it as @new, this does not work
when using the &new statement. This is a limitation
of the Zend Engine and will therefore result in a parser
error.
The second thing references do is to pass variables by-reference.
This is done by making a local variable in a function and
a variable in the calling scope reference to the same content.
Example:
<?php
function foo (&$var)
{
$var++;
}
$a=5;
foo ($a);
?>
will make $a to be 6. This happens because in the function
foo the variable $var refers to the same content as $a.
See also more detailed explanations about passing by reference.
The third thing reference can do is return by reference.
|