2010-07-24 10 views
7

PHP में अनुमानित एक वर्ग विनाशक है? विनाशक कहलाता है कब?PHP में विनाशक अनुमानित है?

कई भाषाओं में की तरह, एक वर्ग नाशक जैसे ही वस्तु क्षेत्र से बाहर चला जाता है बुलाया जाएगा?

उत्तर

10

PHP 5 एक नाशक अवधारणा अन्य वस्तु उन्मुख भाषाओं के समान है, जैसे सी ++ परिचय देता है। नाशक विधि जैसे ही कहा जाएगा के रूप में एक विशेष वस्तु के सभी संदर्भ निकाल दिए जाते हैं या जब वस्तु को स्पष्ट रूप से नष्ट कर दिया या बंद अनुक्रम में किसी भी क्रम में है।

http://php.net/manual/en/language.oop5.decon.php

+2

दरअसल, के रूप में सभी संदर्भों को चले गए हैं, जरूरी नहीं कि एक चर क्षेत्र से बाहर हो जाता है। – Wrikken

+1

इसमें यह भी शामिल है जब स्क्रिप्ट स्वयं निष्पादित करता है। –

+0

लेकिन स्क्रिप्ट के मामले में मैं विनाशकों को कैसे साफ कर सकता हूं? विंडोज़ में, उदाहरण के लिए, जब किसी प्रक्रिया को मारते हैं, तो सभी रेफ-गिनती संसाधन स्वचालित रूप से उसी गिनती पर कम हो जाते हैं जो उन्हें दुर्घटना से पहले बढ़ाया गया था। मुझे अपवाद के मामले में किसी अन्य सर्वर पर सत्र क्लीनअप के लिए एक पैकेट भेजने की आवश्यकता है। –

4

जब इन शर्तों की पहली मुलाकात कर रहे हैं यह कहा जाता है:

  • वस्तु के संदर्भ गणना (इन आमतौर पर तब होता है जब वस्तु कोई और अधिक चर का संदर्भ है 0 को जाता है यह - वे सेट नहीं थे या क्षेत्र से बाहर चला गया -, लेकिन यह, बाद में भी हो सकता है के रूप में एक वस्तु एक चर के अलावा कुछ के द्वारा संदर्भित किया जा सकता है - वास्तव में, संदर्भ गिनती सिर्फ एक संख्या है और एक में हेरफेर किया जा सकता मनमाने ढंग से रास्ता)।
  • जब पीएचपी 5.3 का उपयोग कर, जब कचरा कलेक्टर सकारात्मक संदर्भ गिनती का पता लगाता है वृत्तीय संदर्भ के कारण है।
  • अन्यथा, जब स्क्रिप्ट सफाई से खत्म।

संक्षेप में, आपको हमेशा इसे कॉल करने पर भरोसा नहीं करना चाहिए, क्योंकि स्क्रिप्ट साफ़ रूप से समाप्त नहीं हो सकती है।