Saltar al contenido

¿Los objetos en PHP se pasan por valor o referencia?

Este team especializado pasados algunos días de trabajo y de recopilar de información, dieron con la respuesta, queremos que resulte útil para ti para tu plan.

Solución:

¿Por qué no ejecutar la función y averiguarlo?

$b = new Bar;
echo $b->getFoo(5)->value;
$b->test();
echo $b->getFoo(5)->value;

Para mí, el código anterior (junto con su código) produjo este resultado:

Foo #5
My value has now changed

Esto no se debe a “pasar por referencia”, sin embargo, se debe a “asignación por referencia”. En PHP 5, la asignación por referencia es el comportamiento predeterminado con objetos. Si desea asignar por valor, utilice la palabra clave clon.

Puede consultar http://ca2.php.net/manual/en/language.oop5.references.php para obtener la respuesta real a su pregunta.

Uno de los key-Los puntos de PHP5 OOP que se mencionan a menudo son que “los objetos se pasan por referencias de forma predeterminada”. esto no es completamente true.

Una referencia de PHP es un alias, que permite que dos variables diferentes escriban en el mismo valor. A partir de PHP5, una variable de objeto ya no contiene el objeto en sí como valor. Solo contiene un identificador de objeto que permite a los usuarios de objetos encontrar el objeto real. Cuando un objeto se envía por argumento, se devuelve o se asigna a otra variable, las diferentes variables no son alias: contienen una copia del identificador, que apunta al mismo objeto.

Se pasan por valor en PHP 4 y por referencia en PHP 5. Para pasar objetos por referencia en PHP 4, debe marcarlos explícitamente como tales:

$obj = &new MyObj;

Eres capaz de patrocinar nuestro cometido exponiendo un comentario o valorándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *