PHP5, her nesne örneği için çağrılacak garantili __ imha () yöntemi nedir? Programda istisnalar oluyor bu engelleyebilir miyim?
Script sonlandırıldığında yıkıcı tüm başvurular serbest zaman denilen, ya da olacak. Ben komut dosyası düzgün sonlandırıldığında bu demektir varsayalım. Ben kritik istisnalar çağrılacak yıkıcı garanti değil söyleyebilirim.
PHP documentation biraz ince, ama yıkıcı Durumlar sorunlarına neden olacağını yazıyor.
Benim durumumda yıkıcısı her zaman PHP 5.3 olarak adlandırılan olacak, ancak biz bazı kod parçası exit () çağırır veya ölümcül bir hata oluşursa, PHP ("herhangi" amacıyla yıkıcı arayacak eğer ben gerçek sipariş sipariş olduğunu düşünüyorum uyardı bellek veya sipariş bellek) nesneler için ayrılmıştır. Bu PHP belgelerinde "kapatma dizisi" olarak adlandırılır.
PHP documentation of destructors diyor ki:
PHP 5, C + + gibi diğer nesne yönelimli diller, benzer bir yıkıcı kavram getirmektedir. Yıkıcı yöntem kısa sürede kapatma işlemi sırasında belirli bir nesneye ya da herhangi bir sırayla başka hiçbir göndermeler vardır denir edilecektir.
Eğer Y referansını tutar class X varsa bir sonucu olarak, X yıkıcı Y yıkıcı zaten adı olmuştur SONRA denebilir. Umarım, Y referans belgelenmiş oldu çünkü Resmen bu bir hata değil ... o kadar önemli değildi. Resmen PHP (yıkıcısı doğru sırayla denir) yıkıcı normal denir olmadığını bilmek için bir yol sağlar veya bozucular bu olabilir çünkü başvurulan nesnelerden verileri kullanamazsınız "herhangi bir" düzen denir Ancak, bu sorunu gidermek için çok zor Zaten tahrip edilmiştir. Bir debug_backtrace () kullanarak ve yığın inceleyerek algılama bu eksikliği Geçici çözüm olabilir. Normal yığının eksikliği PHP 5.3 ile "kapatma dizisi" ima gibi görünüyor ama bu, çok, tanımsızdır. Döngüsel başvurular varsa, bu nesnelerin bozucular PHP 5.2 veya daha az olan tüm denilen olmayacak ve PHP 5.3 veya daha büyük "kapatma dizisi sırasında" adı verilecek. "Herhangi bir" düzen olanlar için iyi yani döngüsel başvurular için, mantıksal bir "doğru" emri bulunmadıkça değildir.
Bazı istisnalar (bu sonuçta PHP) vardır:
exit()
başka yıkıcı denir eğer, kalan yıkıcılar (http://php.net/manual/en/language.oop5.decon.php) denilen olmayacakFATAL
hatası yerde oluşursa (birçok olası nedeni, örneğin, herhangi bir başka yıkıcı dışarı bir istisna atmak için çalışırken bir neden olabilir)PHP motoru segment hataya vurur ya da başka bir iç hata oluşursa tabii ki, tüm bahisler kapalı.
Emin için gitmek istiyorsanız bir kapatma işlevi kullanın: register_shutdown_function()