2011-04-02 16 views
6

यह एक साधारण सवाल है कि गुगलिंग का एक घंटा हल नहीं होता है। आप पीएचपी में असफल कैसे शामिल करते हैं? निम्नलिखित कोड के लिए:असफल पकड़ने का प्रयास करें

try { 
    include_once 'mythical_file'; 
} catch (Exception $e) { 
    exit('Fatal'); 
} 

echo '?'; 

साथ mythical_file मौजूदा नहीं, मैं आउटपुट प्राप्त '?'। मुझे पता है कि PHP पकड़ नहीं सकता है असफल रहा क्योंकि यह चेतावनी त्रुटि को ट्रिगर करता है, लेकिन यहां? असफल पकड़ने का सबसे अच्छा तरीका क्या है? उदाहरण के लिए, निम्न कार्य:

(include_once 'unicorn') or exit('!'); 

लेकिन यह एक अपवाद ट्रिगर नहीं करता तो मैं फ़ाइल, लाइन और ढेर संदर्भ प्राप्त नहीं कर सकता।

+0

आप [register_s में देखना चाहते हो सकता है hutdown_function()] (http://php.net/manual/en/function.register-shutdown-function.php) संयोजन में [error_get_last()] (http://php.net/manual/en/function। त्रुटि मिल-last.php)। फ़ाइल, लाइन इत्यादि को पुनः प्राप्त करने में सक्षम होना चाहिए – billrichards

उत्तर

2

आप require_once के बजाय include_once

+0

मुझे लगता है कि मुझे टिकट बंद करना होगा क्योंकि स्पष्ट रूप से यह मेरे कुछ वर्चुअल होस्टों और अन्य लोगों पर काम करता है (आवश्यकता का उपयोग 500 त्रुटि को ट्रिगर करेगा)। आपकी मदद के लिए वैसे भी धन्यवाद! – fabjoa

+1

@fabjoa, @ गौरव - हमारे यहां "टिकट" नहीं हैं, इसलिए कुछ भी बंद करने योग्य नहीं है। – Dori

1

include और include_once ट्रिगर चेतावनी (E_WARNING), require और require_once ट्रिगर त्रुटि (E_COMPILE_ERROR) उपयोग कर सकते हैं। तो आपको require या require_once का उपयोग करना चाहिए।

php.net बोली:

"की आवश्यकता होती है() (शामिल करने के लिए) विफलता यह भी होगा पर छोड़कर त्रुटि दूसरे शब्दों में, यह रुक जाएगा एक घातक E_COMPILE_ERROR स्तर का उत्पादन समान है। स्क्रिप्ट जबकि (शामिल) केवल एक चेतावनी (E_WARNING) जो जारी रखने के लिए स्क्रिप्ट की अनुमति देता है उत्सर्जन करता है। "

+0

'_once' का उपयोग न करें जबतक कि आपको बिल्कुल ऐसा न हो क्योंकि यह प्रदर्शन को थोड़ा सा प्रभावित करता है। – transilvlad

+0

@tntu क्या आप समझा सकते हैं? यह मेरी समझ थी कि फ़ाइल का उपयोग पहले से ही शामिल होने या आवश्यकता होने पर, _once का उपयोग करने से संसाधनों का एक बड़ा अपशिष्ट है। धन्यवाद! – billrichards

+0

@ बिल्रिचर्ड्स यदि आप अच्छे कोड लिखते हैं तो आपको कभी ऐसी स्थिति का सामना नहीं करना चाहिए जहां आप एक ही फाइल को दो बार शामिल करते हैं। स्पष्टीकरण में प्रदर्शन में अंतर क्या है यहां बताया गया है: http://stackoverflow.com/questions/186338/why-is-require-once-so-bad-to-use – transilvlad

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