qualcuno ha idea se e in che modo è possibile distruggere/modificare l'oggetto php a cui si fa riferimento in molti posti? Unset ovviamente distrugge solo un riferimento e talvolta tracciare manualmente tutti i riferimenti non è un'opzione. Qualche idea? Forse c'è qualcosa che mi manca in Reflection?c'è un modo per accedere a tutti i riferimenti a un determinato oggetto?
5
A
risposta
3
risposta Nizza Mark, ma non sono sicuro di come questo dovrebbe funzionare:
primo schema:
<?php
$obj = "foo";
$a = $obj;
$b = $obj;
$c = $obj;
$c = NULL;
unset($c);
var_dump($a, $b, $c);
Risultati:
string(3) "foo"
string(3) "foo"
NULL
secondo diagramma:
<?php
$obj = "foo";
$wrapper =& $obj;
$a = $wrapper;
$b = $wrapper;
$c = $wrapper;
$c = NULL;
unset($c);
var_dump($a, $b, $c);
Risultati:
string(3) "foo"
string(3) "foo"
NULL
modo corretto:
<?php
$obj = "foo";
$a =& $obj;
$b =& $obj;
$c =& $obj;
$c = NULL;
var_dump($a, $b, $c);
Risultati:
NULL
NULL
NULL
Spiegazione:
È necessario fare riferimento le variabili $ a, $ b, $ c per l'indirizzo di memoria di $ obj, questo modo quando si imposta $ c a NULL, questo imposterà l'indirizzo di memoria effettivo in NULL invece del solo riferimento.
6
No, ma è possibile utilizzare un livello aggiuntivo di riferimento indiretto. Attualmente si dispone di questo:
a b c a b (unset)
\ | / \ |
\ | / --> \ |
object object
Invece si può fare questo:
a b c a b c
\ | / \ | /
\ | / --> \ | /
wrapper (unset)
|
|
object
+0
Bella risposta visiva. – webbiedave
Problemi correlati
- 1. Trova tutti i riferimenti a un oggetto in pitone
- 2. Trova tutti i riferimenti a un oggetto in Lua
- 3. In Delphi c'è un modo per vedere tutti i riferimenti e collegamenti a un componente?
- 4. impostare tutti i riferimenti di oggetto a null
- 5. vim: sostituisci tutti i caratteri fino a un determinato token
- 6. Ricerca di tutti i riferimenti a un metodo con Roslyn
- 7. Qual è il modo giusto per avere un oggetto statico a tutti i lavoratori
- 8. Modo DRY per assegnare i valori hash a un oggetto
- 9. "Impossibile accedere a un oggetto disposto"
- 10. C'è un modo per dire a Dropbox di non caricare un determinato file? (Relativo a Eclipse)
- 11. Traccia tutti i riferimenti a oggetti in C#
- 12. Ruby: cattura tutti i metodi inviati a un oggetto
- 13. destrutturazione di un oggetto con riferimenti a se stesso
- 14. C# Come annullare l'iscrizione a tutti i gestori di eventi da un determinato evento?
- 15. VisualVM - Trova tutti i riferimenti a una classe
- 16. Come elencare tutti i metodi per un oggetto in Ruby?
- 17. Globbing con ls per trovare tutti i file che corrispondono a un determinato pattern
- 18. C'è un modo per accedere a R tramite il web?
- 19. Come posso accedere a un oggetto per indice in un osservabile a eliminazione diretta?
- 20. C'è un modo per catturare un tentativo di accedere a una proprietà o un metodo inesistente?
- 21. pydev: trova tutti i riferimenti a una funzione
- 22. Elenco ricorsivo di tutti i file corrispondenti a un determinato tipo di file in Groovy
- 23. Laravel 4: reindirizzamento a un determinato URL
- 24. Autorizzazione a un computer per accedere a un'applicazione Web
- 25. Come accedere a un oggetto Runnable tramite Thread?
- 26. Aggiungere i riferimenti del pacchetto project.json a un VSIX
- 27. Trova tutti i riferimenti di una DLL in un progetto
- 28. Overriding System.Diagnostics.Trace.WriteLine per accedere a un file
- 29. API Twitter - Visualizza tutti i tweet con un determinato hashtag?
- 30. Come ottenere tutti i genitori fino a quando non viene raggiunto un determinato genitore
sebbene pragmaticamente, quando si imposta un riferimento a un oggetto, non è sempre più facile impostarlo utilizzando un riferimento. – andho