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

Instancia - Objeto | &new

Estas en el tema de Instancia - Objeto | &new en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Holas. Aqui estoy de nuevo :) Tengo algunas preguntas que requieren respuestas cortas. Mas que nada para ver si tengo los conceptos bien. [1]¿Cuál es ...
  #1 (permalink)  
Antiguo 28/08/2005, 11:30
 
Fecha de Ingreso: agosto-2005
Mensajes: 143
Antigüedad: 18 años, 8 meses
Puntos: 0
Instancia - Objeto | &new

Holas.

Aqui estoy de nuevo :)
Tengo algunas preguntas que requieren respuestas cortas. Mas que nada para ver si tengo los conceptos bien.

[1]¿Cuál es la diferencia entre instancia y objeto? (es para matarme, lo se)

[2]&new
Código PHP:
<?php
//tengo una clase llamada GestorErrores
$Errores = new GestorErrores;
$Errores = &new GestorErrores;
?>
Usar & hace que el objeto que se cree en la memoria que ocupa $Errores ¿no? De no usarlo la clase se crearía en algun lado y se COPIARÍA a $Errores ¿no? Si me explicarais un poco esto me quedaría mas claro. Thx!

[3]Otra:
Código PHP:
<?php
//...
$Errores =& new GestorErrores;
$Errores = &new GestorErrores;
?>
¿Equivalen a lo mismo?(esta si que es para cortarme el cuello, pero quiero estar 100% seguro xDD)

Saludos ;)
  #2 (permalink)  
Antiguo 28/08/2005, 18:41
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
A ver, corrijanme si me equivoco pero creo que:

1. un objeto es una instancia de una clase.
2. Usando el amperson te permite crear una variable que hace referencia a una instancia de una clase. Sin usarlo, tu creas una instancia totalmente independiente, y por lo tanto mas espacio en memoria. Con la excepción de php5 en donde ya no es necesario ya que todos los objetos son asignados y pasados por referencia.
3. Si, es lo mismo.

Habrá que tener cuidado al hablar de pasar por referencia, es posible que sea mas correcto indicar que se pasa una referencia por valor? como en Java? Me gustaría escuchar opiniones de más gente a este respecto.

saludos
  #3 (permalink)  
Antiguo 29/08/2005, 07:19
 
Fecha de Ingreso: agosto-2005
Mensajes: 143
Antigüedad: 18 años, 8 meses
Puntos: 0
Holas.

Gracias por responder sism82.

Saludos ;)
  #4 (permalink)  
Antiguo 02/09/2005, 21:29
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 19 años
Puntos: 2
Cita:
Iniciado por sism82
A ver, corrijanme si me equivoco pero creo que:

1. un objeto es una instancia de una clase.
2. Usando el amperson te permite crear una variable que hace referencia a una instancia de una clase. Sin usarlo, tu creas una instancia totalmente independiente, y por lo tanto mas espacio en memoria. Con la excepción de php5 en donde ya no es necesario ya que todos los objetos son asignados y pasados por referencia.
3. Si, es lo mismo.

Habrá que tener cuidado al hablar de pasar por referencia, es posible que sea mas correcto indicar que se pasa una referencia por valor? como en Java? Me gustaría escuchar opiniones de más gente a este respecto.

saludos
Si puede considerar como una referencia por valor y esto se debe a que el interprete de php hace diferencia entre el valor y el nombre de una variable. con esto cuando usas un amperson lo que haces es que dos variables con nombres diferentes este apuntando al mismo valor o si quieres verlo de otra manera un valor tiene en ese momento mas de un nombre. De esa forma si creas un objeto y lo asignas mediante una mperson a una variable la variable apunta al objeto y no a una copia del mismo obejto. esto es util cuando trabjamos conb php4 y queremos pasar objetos mediante parametros y no peder el estado del objeto mediante el copiado del mismo. Sobre todo si alteras el objeto dentro de otro, si no lo pasas por referencia alteras la copia y obtienes resultados inesperados en tu aplicacion.


Saludos!.
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:33.