Podręcznik PHP
Poprzedni | Rozdział 14. References Explained | Następny

# 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.

> Notatka: `$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); ?>`

> Notatka: 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.

Poprzedni | Spis treści | Następny
References Explained | Początek rozdziału | What References Are Not