php - आवश्यकताएँ, शामिल, requ_once और include_once के बीच अंतर?




require require-once (18)

PHP में:

  • मुझे require बनाम require उपयोग कब करना चाहिए?
  • मुझे require_once बनाम include_once उपयोग कब करना चाहिए?

2018 के लिए 7 साल के बाद एक जवाब

यह सवाल सात साल पहले पूछा गया था, और कोई भी जवाब प्रश्न के लिए व्यावहारिक सहायता प्रदान नहीं करता है। आधुनिक PHP प्रोग्रामिंग में आप मुख्य रूप से required_once अपने ऑटोलोडर क्लास (संगीतकार ऑटोलोडर) को शामिल करने के लिए केवल एक बार उपयोग करते हैं, और यह आपके सभी वर्गों और कार्यों को लोड करेगा (फ़ंक्शंस फ़ाइलों को सभी में उपलब्ध होने के लिए composer.json फ़ाइल में स्पष्ट रूप से जोड़ा जाना चाहिए अन्य फ़ाइलें)। यदि किसी भी कारण से आपकी कक्षा ऑटोलोडर से लोड नहीं हो पाती है तो आप इसे लोड करने के लिए require_once का उपयोग करते हैं।

इन दिनों आप केवल एक PHP फ़ाइल के एक बड़े हिस्से को विभाजित करने के लिए उपयोग की require । यह मुख्य रूप से एक बड़ी सरणी परिभाषा है। ऐसे मामलों में आप केवल require उपयोग नहीं करते हैं।

 <?php
// arr.php
return ['x'=>'y'];

 <?php
//main.php
$arr= require 'arry.php'

यदि आपके द्वारा उपयोग की जाने वाली फ़ाइल में कुछ निष्पादन योग्य है या कुछ चर घोषित करता है तो आपको लगभग हर समय आवश्यकता का उपयोग करने की require , क्योंकि यदि आप किसी अन्य स्थान पर require_one का उपयोग करते हैं तो आपका कोड निष्पादित नहीं होगा और / या आपके चर चुपचाप शुरू नहीं करेंगे, जिससे बग यह तय करने के लिए बिल्कुल मुश्किल हैं।

वास्तव में include और include_once लिए कोई व्यावहारिक उपयोग केस नहीं है।


  1. किसी भी वर्ग, फ़ंक्शन या निर्भरता को लोड करने की आवश्यकता होने पर फ़ंक्शन की आवश्यकता होती है

  2. जब आप टेम्पलेट-स्टाइल फ़ाइल लोड करना चाहते हैं तो फ़ंक्शन शामिल करें

यदि आप अभी भी उलझन में हैं, तो हमेशा के लिए requ_once का उपयोग करें।


अंतर उत्पन्न होने वाली त्रुटि में अंतर है। require साथ, आप जिस फ़ाइल का उपयोग करना चाहते हैं वह वास्तव में आवश्यक है और यदि यह नहीं E_ERROR तो इस प्रकार एक E_ERROR उत्पन्न करता है।

require() को include() करने के समान है include() विफलता को छोड़कर यह एक घातक E_ERROR स्तर त्रुटि भी उत्पन्न करेगा।

include केवल एक E_WARNING त्रुटि उत्पन्न होती है यदि यह विफल हो जाती है जो कम या ज्यादा चुप है।

तो अगर फ़ाइल को शेष कोड काम करने की आवश्यकता होती है तो आप इसका उपयोग करें और आप स्क्रिप्ट को विफल करने के लिए फ़ाइल उपलब्ध नहीं करना चाहते हैं।

*_once() :

include_once() उन मामलों में उपयोग किया जा सकता है जहां एक ही फ़ाइल को एक स्क्रिप्ट के किसी विशेष निष्पादन के दौरान एक से अधिक बार शामिल किया जा सकता है और मूल्यांकन किया जा सकता है, इसलिए इस मामले में यह फ़ंक्शन रेडिफ़िनेशन, वेरिएबल वैल्यू रीसाइजमेंट इत्यादि जैसी समस्याओं से बचने में मदद कर सकता है।

निश्चित रूप से require_once() पर लागू होता है।

संदर्भ: require , php.net/manual/en/function.include-once.php


असल में, यदि आपको गलत पथ की आवश्यकता है, तो PHP एक घातक त्रुटि फेंकता है और शटडाउन फ़ंक्शन कहा जाता है, लेकिन जब आप गलत पथ शामिल करते हैं, तो PHP निष्पादन जारी रखेगा, लेकिन यह केवल एक चेतावनी प्रदर्शित करेगा कि फ़ाइल मौजूद नहीं है।

अंग्रेजी शब्द की आवश्यकता से , PHP को बताया जाता है कि पृष्ठ या फ़ाइल का निष्पादन आवश्यक फ़ाइल पर निर्भर करता है।

मेरे अनुभव से, कॉन्फ़िगरेशन फ़ाइलों, डेटाबेस कक्षाओं और अन्य महत्वपूर्ण उपयोगिताओं जैसी महत्वपूर्ण फ़ाइलों की आवश्यकता के लिए मानक है।


आवश्यकता के साथ फ़ाइल मौजूद होना चाहिए, अगर ऐसा नहीं होता है तो एक त्रुटि प्रदर्शित होगी; जबकि इसमें शामिल है - अगर फ़ाइल मौजूद नहीं है तो पृष्ठ लोडिंग जारी रहेगा।


उपयोग

  • require
    जब आपके एप्लिकेशन द्वारा फ़ाइल की आवश्यकता होती है, उदाहरण के लिए एक महत्वपूर्ण संदेश टेम्पलेट या कॉन्फ़िगरेशन वेरिएबल वाली फ़ाइल जिसमें ऐप टूट जाएगा।

  • here
    जब फ़ाइल में ऐसी सामग्री होती है जो बाद में समावेशन पर त्रुटि उत्पन्न करेगी, उदाहरण के लिए function important() { /* important code */} निश्चित रूप से आपके एप्लिकेशन में आवश्यक है, लेकिन फ़ंक्शंस को पुन: प्राप्त नहीं किया जा सकता है, फिर से शामिल नहीं किया जाना चाहिए।

  • जब फ़ाइल की आवश्यकता नहीं होती है और तब नहीं मिलता है जब आवेदन प्रवाह जारी नहीं होना चाहिए, उदाहरण के लिए
    मौजूदा दायरे या कुछ से चर का संदर्भ देने वाले टेम्पलेट्स के लिए बढ़िया

  • include_once
    वैकल्पिक निर्भरता जो बाद में लोडिंग या शायद दूरस्थ फ़ाइल समावेशन पर त्रुटियों का उत्पादन करेगी जो आप HTTP ओवरहेड के कारण दो बार नहीं करना चाहते हैं

लेकिन मूल रूप से, यह उपयोग करने के लिए आप पर निर्भर करता है।


पुन: प्रयोज्य PHP टेम्पलेट्स के लिए "शामिल करें" का उपयोग करें। आवश्यक पुस्तकालयों के लिए "आवश्यकता" का प्रयोग करें।

"* _once" अच्छा है, क्योंकि यह जांचता है कि फ़ाइल पहले ही लोड हो चुकी है या नहीं, लेकिन यह केवल "require_once" में मेरे लिए समझ में आता है।


बस जरूरी उपयोग करें और शामिल करें।

क्योंकि लगता है कि include_once या requ_once के साथ कैसे काम करना है। वह लॉग डेटा की तलाश में है जो शामिल या आवश्यक PHP फ़ाइलों को सहेजता है। तो यह शामिल और आवश्यकता से धीमा है।

if (!defined(php)) {
    include 'php';
    define(php, 1);
}

बस इस तरह का उपयोग ...


मुझे दूसरे दिन पूछा गया कि PHP में शामिल और आवश्यकता के बीच क्या अंतर है। वे प्रतीत होता है कि यह वही काम करता है लेकिन इसमें एक महत्वपूर्ण अंतर है।

सबसे पहले, न तो कार्य शामिल हैं या आवश्यकताएं हैं, वे संरचनाएं हैं। इसलिए उन्हें शामिल करने के लिए कॉल करना आवश्यक नहीं है जैसे कि '' file.php '); इसके बजाय इसे 'file.php' शामिल करने के लिए पसंद किया जाता है।

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

आपको विकास प्रक्रिया के दौरान आवश्यकतानुसार किसी भी घातक त्रुटियों पर पिकअप करना चाहिए और अपनी स्क्रिप्ट को जंगली में छोड़ने से पहले उन्हें हल करने में सक्षम होना चाहिए; हालांकि, आप योजना बी को रखने के लिए शामिल करने का उपयोग करना चाह सकते हैं यदि यह सीधे आगे नहीं है: -

<?php
if (@include 'file.php') {
    // Plan A
} else {
    // Plan B - for when 'file.php' cannot be included
}

इस उदाहरण में 'file.php' को पकड़ने के लिए उपयोग किया जाता है, लेकिन यदि यह विफल रहता है तो हम @ का उपयोग करके चेतावनी को दबाते हैं और कुछ वैकल्पिक कोड निष्पादित करते हैं। अगर फाइल नहीं मिल पाती है तो शामिल होगा झूठी वापसी।

include_once और requ_once व्यवहार क्रमशः शामिल और आवश्यकता की तरह व्यवहार करते हैं, सिवाय इसके कि वे केवल फ़ाइल को शामिल करेंगे यदि इसे पहले ही शामिल नहीं किया गया है। अन्यथा, वे एक ही तरह की त्रुटियों को फेंक देते हैं।


मेरा सुझाव है कि केवल 99.9% समय की आवश्यकता है।

इसकी require या उपयोग include बजाय इसका अर्थ यह है कि आपका कोड कहीं और पुन: प्रयोज्य नहीं है, यानी कि आप जिस स्क्रिप्ट को खींच रहे हैं वह वास्तव में कक्षा या कुछ फ़ंक्शन लाइब्रेरी उपलब्ध कराने के बजाय कोड निष्पादित करता है।

यदि आपको स्पॉट पर निष्पादित कोड / कोड शामिल करने की आवश्यकता है, तो यह प्रक्रियात्मक कोड है, और आपको एक नया प्रतिमान जानने की आवश्यकता है। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग, फ़ंक्शन-आधारित प्रोग्रामिंग या कार्यात्मक प्रोग्रामिंग की तरह।

यदि आप पहले ही ओओ या कार्यात्मक प्रोग्रामिंग कर रहे हैं, तो include_once का उपयोग करने में ज्यादातर देरी हो रही है जहां स्टैक में आपको बग / त्रुटियां मिलती हैं। क्या आप जानना चाहते हैं कि फ़ंक्शन do_cool_stuff() तब उपलब्ध नहीं है जब आप इसे बाद में कॉल करने के लिए जाते हैं, या जिस पल में आप लाइब्रेरी की आवश्यकता के अनुसार उपलब्ध होने की उम्मीद करते हैं ? आम तौर पर, अगर आपको कुछ चाहिए और उम्मीद नहीं है तो तत्काल जानना सबसे अच्छा है, इसलिए केवल require_once उपयोग करें।

वैकल्पिक रूप से, आधुनिक ओओपी में, उपयोग पर अपने वर्गों को बस autoload


वे फाइलों को शामिल करने के सभी तरीके हैं:

आवश्यकता है इसका मतलब है कि इसे इसकी जरूरत है। Requ_once का मतलब है कि इसकी आवश्यकता होगी लेकिन केवल एक बार इसकी आवश्यकता है। शामिल करें इसका मतलब है कि इसमें एक फ़ाइल शामिल होगी लेकिन इसे जारी रखने की आवश्यकता नहीं है।

उदाहरण:

'फ़ाइल नाम' की आवश्यकता है Requ_once 'फ़ाइल नाम' 'फ़ाइल नाम' शामिल करें

एक include_once फ़ंक्शन भी है जिसमें एक बार फ़ाइल शामिल होती है।

Include_once 'फ़ाइल नाम'

मेरे फोन से टाइपिंग के रूप में मेरे पास पूंजी अक्षरों का उपयोग न करें।

आपके समय के लिए शुक्रिया।


शामिल()

इसमें एक निर्दिष्ट फ़ाइल शामिल है। यह एक चेतावनी उत्पन्न करेगा यदि यह फ़ाइल को ढूंढने में विफल रहता है और शेष स्क्रिप्ट निष्पादित करता है

की आवश्यकता होती है ()

इसमें एक निर्दिष्ट फ़ाइल शामिल है। यह फ़ाइल को खोजने में विफल रहता है और निष्पादन को रोकता है तो यह एक घातक त्रुटि उत्पन्न करेगा

include_once ()

इसमें एक निर्दिष्ट फ़ाइल शामिल है। एक फाइल पहले से ही शामिल कर दी गई है, इसे दोबारा शामिल नहीं किया जाएगा। यह एए चेतावनी उत्पन्न करेगा अगर यह फ़ाइल को ढूंढने में विफल रहता है और शेष स्क्रिप्ट निष्पादित करता है।

एक बार ज़रूरत()

इसमें एक निर्दिष्ट फ़ाइल शामिल है। एक फाइल पहले से ही शामिल कर दी गई है, इसे दोबारा शामिल नहीं किया जाएगा। अगर यह फाइल ढूंढने में विफल रहता है और निष्पादन को रोकता है तो यह ए घातक त्रुटि उत्पन्न करेगा।


manual :

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

_once() रूपों के लिए भी _once() सच है।


PSR-0 / PSR-4 ऑटोलोडर की उम्र में किसी भी कथन का उपयोग करने के लिए यह पूरी तरह से अनावश्यक हो सकता है यदि आपको केवल अपने कोड में कुछ फ़ंक्शंस / कक्षाएं उपलब्ध कराने की ज़रूरत है (बेशक आपको अभी भी अपने आप में require_once आवश्यकता है बूटस्ट्रैप फ़ाइल और टेम्पलेट्स include यदि आप अभी भी टेम्पलेट इंजन के रूप में PHP का उपयोग करते हैं)।


include() एक चेतावनी फेंक देगा अगर इसमें फ़ाइल शामिल नहीं हो सकती है, लेकिन शेष स्क्रिप्ट चल जाएगी।

require() एक E_COMPILE_ERROR फेंक E_COMPILE_ERROR और स्क्रिप्ट को रोक देगा यदि इसमें फ़ाइल शामिल नहीं हो सकती है।

include_once() और require_once() फ़ंक्शंस में फ़ाइल को दूसरी बार शामिल नहीं किया जाएगा यदि इसे पहले से ही शामिल किया गया है।

निम्नलिखित प्रलेखन पृष्ठ देखें:


require और include_once भी require हैं।

तो आपका सवाल होना चाहिए ...

  1. मुझे require बनाम require उपयोग कब करना चाहिए?
  2. मुझे require_once बनाम require उपयोग कब करना चाहिए

1 का उत्तर here वर्णित here

आवश्यकता () फ़ंक्शन () को शामिल करने के समान है, सिवाय इसके कि यह त्रुटियों को अलग-अलग संभालता है। यदि कोई त्रुटि उत्पन्न होती है, तो शामिल () फ़ंक्शन एक चेतावनी उत्पन्न करता है, लेकिन स्क्रिप्ट निष्पादन जारी रहेगी। आवश्यकता () एक घातक त्रुटि उत्पन्न करता है, और स्क्रिप्ट रुक जाएगी।

2 का जवाब here पाया जा सकता here

Require_once () कथन की आवश्यकता होती है () को छोड़कर PHP को यह जांचने के लिए जांच होगी कि फ़ाइल पहले ही शामिल हो चुकी है या नहीं, और यदि ऐसा है, तो इसे फिर से शामिल करें (आवश्यकताएं)।


आवश्यकताएं एक घातक त्रुटि उत्पन्न करेंगी (E_COMPILE_ERROR) और स्क्रिप्ट को रोकें।

शामिल केवल एक चेतावनी (E_WARNING) उत्पन्न करेगा और स्क्रिप्ट जारी रहेगी।

Require_once कथन का उपयोग किसी अन्य फ़ाइल में एक PHP फ़ाइल को शामिल करने के लिए किया जा सकता है, जब आपको एक से अधिक बार बुलाया गया फ़ाइल शामिल करने की आवश्यकता हो सकती है।

यदि a.php एक PHP स्क्रिप्ट है जो b.php को require_once () कथन के साथ कॉल करता है, और b.php नहीं मिलता है, a.php निष्पादन रोकता है, जिससे घातक त्रुटि होती है।


  1. किसी को कब उपयोग करना चाहिए या include करना चाहिए?

    require कार्यों और कार्यों को एक ही कार्य करता है, यानी निर्दिष्ट फ़ाइल को शामिल और मूल्यांकन करता है, लेकिन अंतर की require जब निर्दिष्ट फ़ाइल स्थान अमान्य है या किसी भी त्रुटि के लिए एक चेतावनी उत्पन्न होगी, जबकि include चेतावनी उत्पन्न होगी और कोड निष्पादन जारी रहेगा ।

    तो आप उस मामले में require फ़ंक्शन का उपयोग कर सकते हैं जहां आप जिस फ़ाइल को शामिल करने का प्रयास कर रहे हैं वह सिस्टम का दिल है और शेष कोड पर एक बड़ा प्रभाव डाल सकता है और आप उस फ़ाइल को शामिल कर सकते हैं जब आप जिस फ़ाइल को शामिल करने का प्रयास कर रहे हैं एक साधारण फ़ाइल है जिसमें कुछ कम महत्वपूर्ण कोड है।

    और मेरी व्यक्तिगत सिफारिश (कम महत्वपूर्ण कोड के लिए) आपके कोड में हर जगह require फ़ंक्शन के लिए जाना है, जबकि यह विकास चरण में है, जैसे कि आप कोड को डीबग कर सकते हैं और बाद में सभी require कार्यों को प्रतिस्थापित करने के require इसे कार्यान्वित करने से पहले फ़ंक्शन include कर सकते हैं। यदि आप किसी भी बग को याद करते हैं तो यह अंतिम उपयोगकर्ता को प्रभावित नहीं करेगा और शेष कोड ठीक से निष्पादित होगा ...

  2. किसी को require_once या require कब उपयोग करनी चाहिए?

    require और require_once बीच मूल अंतर की require require_once जांच करेगा कि फ़ाइल पहले से ही शामिल है या नहीं, अगर यह पहले से ही शामिल है या नहीं, तो इसमें फ़ाइल शामिल नहीं होगी जबकि require फ़ंक्शन में फ़ाइल शामिल होगी चाहे फ़ाइल पहले से ही शामिल है या नहीं।

    तो ऐसे मामलों में जहां आप कोड के कुछ टुकड़े को बार-बार शामिल करना चाहते हैं, फिर require फ़ंक्शन का उपयोग करें, जबकि यदि आप अपने कोड में केवल एक बार कुछ कोड शामिल करना चाहते हैं, तो require_once उपयोग करें।





require-once