Herkesin birçok yerde atıfta bulunulan php nesnesini yok etmeyi/değiştirmeyi nasıl ve nasıl mümkün kılabileceğine dair fikri var mı? unset, belli ki sadece bir referansı yok eder ve bazen tüm referansları manuel olarak izlemek bir seçenek değildir. Herhangi bir fikir? Belki de Reflection'da eksik olan bir şey var mı?Verilen nesneye yapılan tüm referanslara erişmenin herhangi bir yolu var mı?
5
A
cevap
3
Güzel cevap Mark, ama bu nasıl olacağı emin değilim:
İlk Şeması:
<?php
$obj = "foo";
$a = $obj;
$b = $obj;
$c = $obj;
$c = NULL;
unset($c);
var_dump($a, $b, $c);
Sonuçlar:
string(3) "foo"
string(3) "foo"
NULL
İkinci Şeması:
<?php
$obj = "foo";
$wrapper =& $obj;
$a = $wrapper;
$b = $wrapper;
$c = $wrapper;
$c = NULL;
unset($c);
var_dump($a, $b, $c);
Sonuçlar:
string(3) "foo"
string(3) "foo"
NULL
Doğru Yol:
<?php
$obj = "foo";
$a =& $obj;
$b =& $obj;
$c =& $obj;
$c = NULL;
var_dump($a, $b, $c);
Sonuçlar:
NULL
NULL
NULL
Açıklama: Sen $ a $, b $ nesne bellek adresine $ c, bu değişkenleri başvurmak gerekir
NULL için $ c ayarladığınızda, bu yalnızca referans yerine gerçek bellek adresini NULL olarak ayarlar.
6
Hayır ancak bunun yerine fazladan bir seviyede kullanabilirsiniz. Şu anda bu var:
a b c a b (unset)
\ | / \ |
\ | / --> \ |
object object
yerine bunu yapabilirsiniz:
a b c a b c
\ | / \ | /
\ | / --> \ | /
wrapper (unset)
|
|
object
+0
Güzel görsel cevap. – webbiedave
İlgili konular
- 1. Otomatik olarak herhangi bir Logcat Girişine çift tıklama ile erişmenin herhangi bir yolu var mı?
- 2. Bir Java Bean'den web.xml özelliklerine erişmenin bir yolu var mı?
- 3. Windows'ta anahtar parolasına erişmeden anahtarlığa erişmenin bir yolu var mı?
- 4. ASP.NET'teki geçerli oturumların koleksiyonuna erişmenin bir yolu var mı?
- 5. SELECT deyimindeki "önceki satır" değerine erişmenin bir yolu var mı?
- 6. Bir ruby case ifadesinden ifadeye erişmenin herhangi bir yolu var mı?
- 7. Java yineleyicileri ve her bir döngü için. Temel yineleyiciye erişmenin herhangi bir yolu var mı?
- 8. python içindeki bir nesneye yapılan tüm referansları bul
- 9. "Vurgulu" kodun herhangi bir yolu var mı?
- 10. Python'u kullanarak OS X wi-fi verilerine erişmenin herhangi bir yolu var mı? (Sinyal gücü, örneğin)
- 11. Bir birim testinde yapılan baskının bastırılmasının bir yolu var mı?
- 12. Gerrit REST API'sından tüm işleri almanın bir yolu var mı?
- 13. Heroku'da postgres'i yeniden başlatmanın herhangi bir yolu var mı?
- 14. RenderBody() gereksinimini ortadan kaldırmak için herhangi bir yolu var mı?
- 15. Kelimenin bir kısmını önişlemciyle değiştirmenin herhangi bir yolu var mı?
- 16. Doğrudan bir ikili SONAME değiştirmenin herhangi bir yolu var mı?
- 17. Yazdırıldığında bir diziden "," öğesini kaldırmanın herhangi bir yolu var mı?
- 18. HTML: Bir textarea'da resim göstermenin herhangi bir yolu var mı?
- 19. Bir jeneratör işlevini dışa aktarmanın herhangi bir yolu var mı?
- 20. Bir dizenin piksel uzunluğunu hesaplamanın herhangi bir yolu var mı?
- 21. , alan2 başlatılırken alan1 değerine değinmenin herhangi bir yolu var mı?
- 22. Swift'de bir CollectionView'da en çok görüntülenen hücreye erişmenin bir yolu var mı?
- 23. Tüm JavaScript yöntemlerini bir işlevle sarmanın bir yolu var mı?
- 24. Python'da varolan bir nesneye yöntem eklemek için herhangi bir zarif yol var mı?
- 25. Scala'da, bir dış kapsamda tanımlanan bir sembole (değişkene) erişmenin bir yolu var mı? Örneğin
- 26. BitmapFactory.decodeStream() hızını iyileştirmenin herhangi bir yolu var mı?
- 27. Raylar/Yakut: Yığın izlerini kısaltmanın herhangi bir yolu var mı?
- 28. ImageMagick. Derlemek ve çalıştırmak için herhangi bir yolu var mı?
- 29. Yasemin casuslarını argümanlara göre değiştirmenin herhangi bir yolu var mı?
- 30. Python: Sabit parametreleri bildirmenin herhangi bir yolu var mı?
pragmatik olarak, bir nesneye bir referans belirlerken, bir referans kullanarak ayarlamak her zaman daha kolay değildir. – andho