Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-04-2009
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 17
gabrielflowers Va por buen camino
se pueden pasar objetos como parametros?

hola todos, tengo una duda se pueden pasar objetos como parametros de funciones??, ahora bien, si es posible, el paso de objetos se hace necesariamente por referencia?? algun ejemplo que puedan postear o sugerencias/comentarios? saludos gracias
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #2  
Antiguo 01-04-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Sí, claro que se pueden pasar objetos. El paso es por valor pero hay que tener cuidado con eso, porque desde la versión 5.x, las variables de tipo objeto no contienen en sí mismas el valor del objeto sino que son punteros al objeto. Esto implica que si tu función modifica propiedades del objeto, los cambios se reflejan al exterior, pero si tu función cambia el valor de la variable, el cambio no se refleja.

Queda mejor con un par de ejemplos:

Código PHP:
class User
{
  var 
$realName '';
  var 
$loginName '';
  var 
$password '';
}

$user = new User();
$user->realName 'Mahatma Gandhi';
$user->loginName 'gandhi';
$user->password 'f0d044df01b9010c16dc7223f5e842dc';

function 
cambiaPropiedades($user)
{
  
$user->password 'mohandas';
}

function 
cambiaValor($user)
{
  
$user 'mahoma va a la montaña';

Si aplicas la función cambiaPropiedades a $user, luego de la llamada $user se verá así:

Código:
object(User)[1]
  public 'realName' => string 'Mahatma Gandhi' (length=14)
  public 'loginName' => string 'gandhi' (length=6)
  public 'password' => string 'mohandas' (length=8)
Sin embargo, si aplicas la función cambiaValor, $user se verá así:

Código:
object(User)[1]
  public 'realName' => string 'Mahatma Gandhi' (length=14)
  public 'loginName' => string 'gandhi' (length=6)
  public 'password' => string 'f0d044df01b9010c16dc7223f5e842dc' (length=32)
Es decir, sin cambios, porque lo que cambió en la función fue el valor del puntero pero no el objeto al cuál apunta.

Si en cambio defines cambiaValor como:

Código PHP:
function cambiaValor(&$user// <-- observa el apóstrofo
{
  
$user 'mahoma va a la montaña';

entonces, luego de la llamada $user se ve así:

Código:
string 'mahoma va a la montaña' (length=22)
porque el paso fue por referencia.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Se pueden compartir objetos con Createfilemapping, Open filemapping? avmm2004 API de Windows 2 04-01-2009 22:19:25
Pasar Componentes como parámetros Antonioveneroso C++ Builder 5 26-02-2008 19:48:58
Pasar matriz como parámetros bosterito Varios 1 26-11-2006 03:42:40
Cómo pasar los parámetros? dunia_lv Impresión 0 15-04-2005 16:26:42
como pasar parametros... hook SQL 13 11-05-2004 19:24:14


La franja horaria es GMT +2. Ahora son las 11:40:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi