valor referencia por paso pasar parametros funciones php drupal-7 pass-by-reference

php - pasar - paso por referencia en c



funciĆ³n llamada pasar por referencia? (2)

Drupal usa la función para almacenar datos en caché durante una única carga de página. En realidad se puede usar de la misma manera que:

static $initialized = false;

Solamente, al usar un almacén central y mantener un registro de las variables por nombre de función, otras funciones pueden acceder (y aún más importante para Drupal, restablecer) el valor durante una solicitud de página.

Cómo lo usa Drupal:

Jeff Eaton creó una buena publicación de blog sobre drupal_static y otras técnicas de almacenamiento en caché en Drupal 7.

Digamos que otro módulo quiere llamar a su función, ya que ha configurado $initialized en true, sabe que puede recuperar los datos del caché. Pero, ¿y si ese otro módulo no quiere que lo guardes? A continuación, puede restablecer su variable estática de la siguiente manera:

$initialized = &drupal_static(''your_module_your_function''); $initialized = false; $freshData = your_module_your_function();

Puede que no sea el patrón más limpio, pero así es como Drupal lo hace en muchos lugares.

Lo que hace desde un punto de vista PHP:

el uso de esta construcción permite que la función llamada devuelva su valor por referencia en lugar de por valor. Para hacerlo, la función llamada debe definirse también con un signo comercial, por ejemplo:

public function &getBar() { return $this->bar; }

Incluso puede combinarlo con parámetros por referencia. De esta forma, puede pasar una referencia hasta el final a través de una función de modo que cuando modifique el valor devuelto, también modifique el valor original. Por ejemplo:

function &getRef(&$x) { return $x; } $a = 1; $b = &getRef($a); $b++; echo $a; // Will output 2

Vi algo que no entendí del todo en el módulo drupal CAS, línea 245 de cas.module :

$initialized = &drupal_static(__FUNCTION__, FALSE);

¿Qué está pasando con la función que tiene el símbolo de referencia antes? Pensé que solo podría funcionar con variables. ¿Alguien puede darme una explicación simple de esto? ¿Qué sucede cuando una función se llama así y cuál es el valor de $initialized ?


El retorno de la función se devuelve como referencia . Del manual:

La devolución por referencia es útil cuando desea usar una función para encontrar a qué variable debe vincularse una referencia. No use retorno por referencia para aumentar el rendimiento. El motor automáticamente optimizará esto por sí mismo.