¿Qué significa el signo “&” en PHP?

Estaba tratando de encontrar esta respuesta en Google, pero supongo que el símbolo & funciona como un operador, o simplemente no es generalmente un término de búsqueda por ningún motivo … de todos modos. Vi este fragmento de código mientras aprendía a crear complementos de WordPress, por lo que solo necesito saber qué significa & && &&&& cuando precede a una variable que contiene un objeto de clase.

 //Actions and Filters if (isset($dl_pluginSeries)) { //Actions add_action('wp_head', array(&$dl_pluginSeries, 'addHeaderCode'), 1); //Filters add_filter('the_content', array(&$dl_pluginSeries, 'addContent')); } 

Esto obligará a la variable a pasar por referencia. Normalmente, se crearía una copia impresa para los tipos simples. Esto puede ser útil para cadenas grandes (ganancia de rendimiento) o si desea manipular la variable sin usar la statement return, por ejemplo:

 $a = 1; function inc(&$input) { $input++; } inc($a); echo $a; // 2 

Los objetos se pasarán por referencia automáticamente.

Si desea manejar una copia a una función, use

 clone $object; 

Entonces, el objeto original no se altera, por ejemplo:

 $a = new Obj; $a->prop = 1; $b = clone $a; $b->prop = 2; // $a->prop remains at 1 

El ampersand que precede a una variable representa una referencia al original, en lugar de una copia o solo el valor.

Vea aquí: http://www.phpreferencebook.com/samples/php-pass-by-reference/

Lo usé para enviar una variable a una función y hacer que la función cambie la variable. Una vez que se realiza la función, no es necesario devolver la función al valor de retorno y establecer el nuevo valor en mi variable.

Ejemplo

 function fixString(&$str) { $str = "World"; } $str = "Hello"; fixString($str); echo $str; //Outputs World; 

Código sin el &

 function fixString($str) { $str = "World"; return $str; } $str = "Hello"; $str = fixString($str); echo $str; //Outputs World;