Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Que significa & delante de una funcion

Estas en el tema de Que significa & delante de una funcion en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Revisando por me encontre con este pedazo de code: Código PHP:    function & getInstance () {            static  $instance  =  null ;            if ( is_null ( $instance )) { ...
  #1 (permalink)  
Antiguo 28/12/2004, 11:29
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 21 años
Puntos: 1
Pregunta Que significa & delante de una funcion

Revisando por me encontre con este pedazo de code:

Código PHP:
  function &getInstance() {
           static 
$instance null;

           if (
is_null($instance)) {
               
$instance = new Singleton();
           }
           return 
$instance;
       } 
Lo me no entiendo porque pone el & delante del nombre de la función

Saludos
__________________
saludos :adios:
  #2 (permalink)  
Antiguo 28/12/2004, 12:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 23 años
Puntos: 129
En general el & delante de una función o variable significa "como referencia" .. es decir, no se crea/duplica el valor o función sino que se llama a la original ...

Se usa mucho en programación orientada a objetos. Muevo tu pregunta al foro de PHP orientado a objetos pues lo que muestras es un "método" o parte de el de un objeto (classe).

Un saludo,
  #3 (permalink)  
Antiguo 28/12/2004, 13:55
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 21 años
Puntos: 1
Cita:
Iniciado por Cluster
es decir, no se crea/duplica el valor o función sino que se llama a la original ...
No te entendi esta parte a que te refieres que busca el original?
__________________
saludos :adios:
  #4 (permalink)  
Antiguo 28/12/2004, 14:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 23 años
Puntos: 129
Pues que no se crea otra instancia en memoria de la función o variable. Se toma lo que ya hay y no se crean duplicados.

http://www.php.net/manual/es/languag...riables.basics
http://es.tldp.org/Manuales-LuCAS/ma.../funciones.htm

En realidad eso de pasar una variable por "referencia" (con el &) o por "valor" (sin &) no depende de PHP (el concepto) .. Por eso, si quieres profundizar sobre el tema .. deberías buscar otro tipo de tutoriales.


Un saludo,
  #5 (permalink)  
Antiguo 29/12/2004, 18:01
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 21 años, 2 meses
Puntos: 1
el amperson al inicio de la funcion indica que la funcion en cuestion va a regresar una referencia, no un valor. Una referencia es una variable que lo unico que contiene es la direccion de memoria del contenido de otra variable. :p es algo confuso si nunca las has usado, lee los tutoriales que te envio cluster.

saludos
  #6 (permalink)  
Antiguo 30/12/2004, 08:10
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 22 años, 2 meses
Puntos: 4
esto es sin referencia:
$a = 1;
$a = $b;

ahora hay 2 valores = a 1 en memoria

pero con referencia

$a = 1;
$a =& $b;

ahora b y a apuntan a un valor de la varaible en memoria, = ambas valen 1, pero en el primer caso se usaron 2 porciones de memoria, aki la referencia apunta a la misma porcion de memoria.
  #7 (permalink)  
Antiguo 30/12/2004, 09:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 6 meses
Puntos: 16
Cita:
Iniciado por ArrauKano
esto es sin referencia:
$a = 1;
$a = $b;

ahora hay 2 valores = a 1 en memoria

pero con referencia

$a = 1;
$a =& $b;

ahora b y a apuntan a un valor de la varaible en memoria, = ambas valen 1, pero en el primer caso se usaron 2 porciones de memoria, aki la referencia apunta a la misma porcion de memoria.
Mas bien el codigo es al reves:

$a = 1;
$b = $a;

y

$a = 1;
$b =& $a;

Y para completar el ejemplo, a estos dos codigos añade:

$a++;
echo $b;

En el primer caso, mostrara 1, mientras que en el segundo, mostrara 2.

En el manual http://es.php.net/manual/en/language.references.php

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:21.