Directamente, puede ser imposible - sin embargo, si usted tiene el control tanto sobre la función que se están aplicando y del código que llamadas que - entonces no es una solución temporal que puede encontrar adecuado.
¿Estaría bien con tener que insertar la variable en cuestión en un objeto? El código se vería (algo así) así si lo hicieras.
function toBeCalled($par_ref) {
$parameter = $par_ref->parameter;
//...Do Something...
$par_ref->parameter = $parameter;
}
$changingVar = 'passThis';
$parembed = new stdClass; // Creates an empty object
$parembed->parameter = array($changingVar);
call_user_func_array('toBeCalled', $parembed);
Ves, una variable de objeto en PHP no es más que una referencia a los contenidos del objeto --- por lo que si se pasa un objeto a una función, cualquier cambio que hace la función de la contenido del objeto se reflejará a lo que la función de llamada también tiene acceso.
Sólo asegúrese de que la función de llamada nunca hace una asignación a la variable de objeto en sí - o que hará la función de, básicamente, pierden la referencia. Cualquier declaración de asignación que la función realice debe ser estrictamente al contenido del objeto.
Esta solución lanza advertencia con estricto está activado ... "Deprecated: Llame a tiempo el paso por referencia ya no se utiliza en" – Archenoth
no sé acerca de la versión más reciente de PHP, pero en mi servidor 5.3.3 cuando utilicé 'call_user_func (" function ", & $ parameter)' recibí el mensaje Deprecated. Cuando cambié a 'call_user_func_array' solucionó el problema. Entonces verifiqué con STRICT habilitado y todavía no recibí el mensaje, así que creo que esta es una forma aceptable de hacerlo. – Lightbulb1