¿alguien tiene idea si y cómo es posible destruir/cambiar el objeto php al que se hace referencia en muchos lugares? Unset obviamente destruye solo una referencia, y algunas veces el rastreo de todas las referencias manualmente no es una opción. ¿Algunas ideas? Tal vez hay algo que me falta en Reflection?¿hay alguna manera de acceder a todas las referencias al objeto dado?
5
A
Respuesta
3
Niza respuesta Marcos, pero no estoy seguro de cómo esto funcionaría:
primer diagrama:
<?php
$obj = "foo";
$a = $obj;
$b = $obj;
$c = $obj;
$c = NULL;
unset($c);
var_dump($a, $b, $c);
Resultados:
string(3) "foo"
string(3) "foo"
NULL
segundo diagrama:
<?php
$obj = "foo";
$wrapper =& $obj;
$a = $wrapper;
$b = $wrapper;
$c = $wrapper;
$c = NULL;
unset($c);
var_dump($a, $b, $c);
Resultados:
string(3) "foo"
string(3) "foo"
NULL
forma correcta:
<?php
$obj = "foo";
$a =& $obj;
$b =& $obj;
$c =& $obj;
$c = NULL;
var_dump($a, $b, $c);
Resultados:
NULL
NULL
NULL
Explicación:
Es necesario hacer referencia a las variables $ a, $ b, $ c para la dirección de memoria de $ obj, este forma cuando configura $ c en NULL, esto establecerá la dirección de memoria real en NULL en lugar de solo la referencia.
6
No, pero se puede usar un nivel extra de indirección en su lugar. Actualmente tiene este:
a b c a b (unset)
\ | / \ |
\ | / --> \ |
object object
su lugar se puede hacer esto:
a b c a b c
\ | / \ | /
\ | / --> \ | /
wrapper (unset)
|
|
object
+0
Niza respuesta visual. – webbiedave
Cuestiones relacionadas
- 1. C#: ¿Hay alguna forma de encontrar/actualizar fácilmente todas las referencias a un objeto?
- 2. ¿Hay alguna manera de enumerar todas las asociaciones belongs_to?
- 3. Buscar todas las referencias a un objeto en Lua
- 4. ¿Hay alguna manera de acceder al hardware directamente en Python?
- 5. Buscar todas las referencias a un objeto en python
- 6. ¿Hay alguna manera de obtener todas las variables en Ruby?
- 7. Resalta todas las referencias a X?
- 8. ¿Cómo eliminar todas las referencias de un objeto en Python?
- 9. VS2010 Encuentre todas las referencias al proyecto en la solución
- 10. Dado un módulo en pypi, ¿hay alguna manera de introspectar el módulo y mostrar todas las dependencias?
- 11. ¿Hay alguna manera de atrapar un intento de acceder a una propiedad o método inexistente?
- 12. ¿Hay alguna manera de obtener todas las dependencias del proyecto a través del plugin sbt?
- 13. ¿Hay alguna manera de evitar $ this-> en todas partes?
- 14. ¿Hay alguna manera en Spring para autocablear todas las dependencias de un tipo determinado?
- 15. Oracle todas las referencias de clave externa
- 16. ¿Hay alguna manera de acceder a R a través de la web?
- 17. ¿Hay alguna manera de encontrar todas las entidades que han eliminado sus relaciones?
- 18. ¿Hay alguna manera de acceder al valor de "fila anterior" en una instrucción SELECT?
- 19. ¿Hay alguna manera de acceder al contenedor subyacente de los adaptadores de contenedor STL?
- 20. Buscar todas las referencias a un objeto en una base de datos SQL Server
- 21. ¿Hay alguna manera, en tiempo de diseño, de inicializar un objeto con todas las propiedades en Visual Studio 2010?
- 22. ¿Hay alguna manera de acceder a __dict__ (o algo así) que incluya clases base?
- 23. ¿Hay alguna manera de montar Android .img para acceder al contenido de AVD (Dispositivo virtual Android)?
- 24. ¿Hay alguna forma de enumerar todas las llamadas de iguales() de una determinada clase con Eclipse?
- 25. Cómo acceder al atributo de objeto dado cadena correspondiente al nombre de ese atributo
- 26. Cómo omitir las anulaciones de un método al buscar todas las referencias
- 27. ¿Hay alguna manera de recorrer y ejecutar todas las funciones en una clase de Python?
- 28. Encontrar todas las referencias en Eclipse
- 29. Eliminación de elementos de las listas y todas las referencias a ellos
- 30. ¿Hay alguna manera de inicializar un objeto mediante un hash?
aunque pragmáticamente, al establecer una referencia a un objeto, no siempre es más fácil establecerlo usando una referencia. – andho