2011-04-08 12 views
5

मैं वैश्विक चर/कार्य के भंडारण के लिए एक छोटे से वर्ग में लिखा था। मेरे सवाल है - यह बाद स्क्रिप्ट समाप्त हो गया है वर्ग वस्तु को नष्ट करने के लिए आवश्यक है? या php उस ऑब्जेक्ट को ही नष्ट कर देगा? - कैसेphp नौसिखिया सवाल: वर्ग वस्तु को नष्ट?

$web=new c_web("myWeb"); 
$web->loadTemplate("/!framework/admin/template.htm"); 
$web->doStuff(); 
// script has finished - destroying required here? 

मामले में मैं इसे नष्ट करने के लिए की जरूरत है:

यहाँ मेरी कोड है? अग्रिम

उत्तर

8

स्क्रिप्ट खत्म तो में THX, स्मृति जारी किया गया है। आप के रूप में तैयार हैं :)

+0

महान - धन्यवाद! और इसके बारे में क्या होगा यदि एक स्क्रिप्ट को एक त्रुटि से समाप्त कर दिया जाएगा? सभी चर (डेटाबेस ..) भी नष्ट हो जाएगा? – Fuxi

+0

खैर, डेटाबेस कनेक्शन को 'बंद' की आवश्यकता हो सकती है, लेकिन अधिकांश परिस्थितियों में आपको केवल इस बारे में चिंता करने की आवश्यकता होती है जब आपको अधिक स्मृति की आवश्यकता होती है। तो यदि आप किसी ऑब्जेक्ट में डेटा की मात्रा को लोड करते हैं, और फिर आप इसे फिर से करना चाहते हैं। लेकिन मूल रूप से: चिंता न करें, कोड खुश :) – Nanne

3

नहीं, आपको किसी भी चर को अपने आप को नष्ट करने की आवश्यकता नहीं है (और एक वस्तु एक चर है): जैसे ही आपकी PHP स्क्रिप्ट समाप्त हो जाती है, इसके चर को मुक्त कर दिया जाएगा, और संवाददाता स्मृति जारी किया।

दरअसल, variable's scope के अंत तक एक चर स्वचालित रूप से नष्ट हो जाता है - और, जब आप स्क्रिप्ट के अंत तक पहुंच जाते हैं, तो यह उस स्क्रिप्ट के निष्पादन द्वारा पेश किए गए दायरे का अंत होता है।


(एक और जवाब के लिए एक टिप्पणी का उत्तर देना) बेशक
, जब अपनी स्क्रिप्ट किसी त्रुटि के कारण समाप्त हो गया है, एक ही बात होता है: चर मुक्त कर दिया जाता है, और स्मृति का विमोचन किया।

+0

खुला डेटाबेस कनेक्शन के बारे में क्या? क्या मुझे उन्हें बंद करने की ज़रूरत है? – Fuxi

+0

जब तक आप लगातार कनेक्शन का उपयोग नहीं कर रहे हैं, तो PHP स्क्रिप्ट समाप्त होने पर कनेक्शन स्वचालित रूप से समाप्त हो जाते हैं। –

4

रूप @Nanne, sayd अगर स्क्रिप्ट समाप्त स्मृति जारी किया गया है, हालांकि कुछ परिस्थितियों में आप unset($web); को whant हो सकता है।

संबंधित मुद्दे