क्या उनके बीच कोई अंतर है? क्या उनका उपयोग करना प्राथमिकता का विषय है? क्या एक दूसरे का उपयोग करने से कोई फायदा होता है? सुरक्षा के लिए कौन सा बेहतर है?
क्या उनके बीच कोई अंतर है? क्या उनका उपयोग करना प्राथमिकता का विषय है? क्या एक दूसरे का उपयोग करने से कोई फायदा होता है? सुरक्षा के लिए कौन सा बेहतर है?
जवाबों:
आपको पेज केrequire
विस्तृत PHP मैनुअल में बताए गए अंतर मिलेंगे :
require
के समान हैinclude
विफलता यह भी एक घातक उत्पादन करेगा पर सिवायE_COMPILE_ERROR
स्तर त्रुटि। दूसरे शब्दों में, यह स्क्रिप्ट को रोक देगा जबकि केवल एक चेतावनी (E_WARNING
) का उत्सर्जन करता है जो स्क्रिप्ट को जारी रखने की अनुमति देता है।
उदाहरण के लिए @ efritz का उत्तर देखें
<?php if (isset($flibbertygibbet)) require 'file.php';
लगता है कि यह उत्तर पूरी तरह से गलत होगा। अन्यथा, मुझे एक गंभीर त्रुटि मिलनी चाहिए, भले ही यह शर्त सही न हो। strace
PHP को छूने की कोशिश भी नहीं करता है file.php
।
if (false) require 'file.php';
'file.php' को लोड किया जाएगा (लेकिन निष्पादित नहीं किया गया)। TLDR इन सभी टिप्पणियों की अवहेलना करता है।
require
यदि फ़ाइल लोड नहीं की जा सकती है, तो PHP घातक त्रुटि को फेंक देगा। (निष्पादन बंद हो जाता है)
include
यदि फ़ाइल लोड नहीं की जा सकती तो चेतावनी का उत्पादन करता है। (निष्पादन जारी है)
यहाँ शामिल है और अंतर की आवश्यकता का एक अच्छा चित्रण है :
प्रेषक: अंतर के लिए php शामिल है (रॉबर्ट के द्वारा; नवंबर 2012)
include
यदि आप फ़ाइल को लोड किए बिना अपनी स्क्रिप्ट जारी रखने का उपयोग नहीं करते हैं (यदि यह मौजूद नहीं है तो) और आप कर सकते हैं (हालांकि आपको ऐसा नहीं करना चाहिए) एक चेतावनी त्रुटि संदेश के साथ रहते हैं।
require
यदि आप निर्दिष्ट फ़ाइल लोड नहीं कर सकते हैं, और एक घातक त्रुटि को फेंक सकते हैं, तो इसका उपयोग करके आपकी स्क्रिप्ट रुक जाएगी।
जैसा कि दूसरों ने बताया, एकमात्र अंतर यह है कि एक घातक त्रुटि फेंकता है, और इसमें शामिल है - एक बिल्ली के समान चेतावनी। के रूप में जो एक का उपयोग करने के लिए, मेरी सलाह को शामिल करने के लिए छड़ी है। क्यों? क्योंकि आप एक चेतावनी को पकड़ सकते हैं और उपयोगकर्ताओं को समाप्त करने के लिए एक सार्थक प्रतिक्रिया उत्पन्न कर सकते हैं। विचार करें
// Example 1.
// users see a standard php error message or a blank screen
// depending on your display_errors setting
require 'not_there';
// Example 2.
// users see a meaningful error message
try {
include 'not_there';
} catch(Exception $e) {
echo "something strange happened!";
}
NB: उदाहरण 2 के लिए आपको एक त्रुटि-से-अपवाद हैंडलर स्थापित करने की आवश्यकता है, जैसा कि यहाँ वर्णित है http://www.php.net/manual/en/class.errorexception.php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>
कोड के साथ एक बहुत ही सरल व्यावहारिक उदाहरण। पहली प्रतिध्वनि प्रदर्शित की जाएगी। कोई फर्क नहीं पड़ता कि आप उपयोग करते हैं या आवश्यकता होती है क्योंकि इसके रन या आवश्यक से पहले चलता है।
परिणाम की जांच करने के लिए, किसी कोड की दूसरी पंक्ति में जानबूझकर फ़ाइल को गलत रास्ता प्रदान करना या फ़ाइल नाम में त्रुटि करना। इस प्रकार प्रदर्शित होने वाली दूसरी प्रतिध्वनि पूरी तरह से इस बात पर निर्भर करेगी कि आप आवश्यकता का उपयोग करते हैं या शामिल हैं ।
यदि आप उपयोग करते हैं , तो दूसरी प्रतिध्वनि की आवश्यकता होती है , लेकिन यदि आप उपयोग नहीं करते हैं, तो कोई फर्क नहीं पड़ता कि क्या त्रुटि आती है, आपको दूसरी प्रतिध्वनि का परिणाम भी दिखाई देगा।
शामिल किए जाने के कार्यक्रम के मामले में ब्राउज़र पर चेतावनी को समाप्त नहीं करेगा और प्रदर्शित नहीं करेगा, दूसरी तरफ आवश्यकता के अनुसार प्रोग्राम फ़ाइल नहीं मिलने की स्थिति में घातक त्रुटि को समाप्त और प्रदर्शित करेगा।