आवश्यकता, शामिल, requirement_once और शामिल_once के बीच अंतर?


1213

PHP में:

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

3
PHP CodeSniffer में कहा गया है, यदि फ़ाइल सशर्त रूप से शामिल की जा रही है, तो इसमें add_once (requirement_once के बजाय) का उपयोग करें।
फरहाद

जवाबों:


1426

कर रहे हैं requireऔर include_onceसाथ ही।

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

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

1 का उत्तर यहाँ वर्णित है

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

2 का उत्तर यहां पाया जा सकता है

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


58
मन की आवश्यकता होती है () आवश्यकता से अधिक तेजी से निष्पादित होता है_ऑनसे (), इसलिए यदि आप सुनिश्चित हैं कि कोई डुप्लिकेट नहीं हैं, तो उपयोग की आवश्यकता () शामिल हैं।
डायनेक्स

48
@DiAlex, requirement_once धीमा है, लेकिन लगभग औसत दर्जे का नहीं है।
प्रो। फाल्कन कॉन्ट्रैक्ट ने

77
@DiAlex ... और, अगर यह पता चला है कि फ़ाइल, वास्तव में, पहले से ही शामिल है, तो require_once()दो का तेज होगा
टॉम

11
@ Prof.Falken किन परिस्थितियों में किसी को एक से अधिक बार एक ही फाइल की आवश्यकता होती है ?? मैं अपने वर्तमान दिमाग सेट के भीतर एक के बारे में सोच भी नहीं सकता।
वीशी ज़ेंग

17
@WeishiZeng वेब पृष्ठों के लिए, HTML स्निपेट हो सकते हैं जिन्हें आप एक से अधिक बार शामिल करना चाहते हैं।
जेम्स बेनिंजर

406

उपयोग

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

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

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

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

लेकिन मूल रूप से, यह आपके ऊपर है कि कब कौन सा उपयोग करना है।


मेरे पास पीडीओ-कनेक्शन (डेटाबेस के लिए) है । क्या मुझे कौन सा उपयोग करना चाहिए? include? include_once? require? require_once?
शफीज़ादेह

6
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह संक्षिप्त रूप में प्रश्न का उत्तर देता है और आधिकारिक मैनुअल से लिंक करता है, इसके बजाय अन्य उत्तर केवल w3xchools को जोड़ता है।
डेनियल डब्ल्यू

9
मुझे एक कारण दें कि यदि आवश्यक नहीं है तो आप इसे क्यों शामिल करेंगे?
फ्रांसिस्को ओचोआ

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

301

मेरा सुझाव सिर्फ require_once99.9% समय का उपयोग करना है।

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

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

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

वैकल्पिक रूप से, आधुनिक ओओपी में, बस उपयोग पर अपनी कक्षाओं को ऑटोलड करें।


41
+1 यह स्वीकृत उत्तर होना चाहिए। प्रमुख बिंदु है कि कर रहे हैं includeपरिवार आम तौर पर एक सिरे से बुरा विचार कर रहे हैं (क्योंकि यह मौजूदा नहीं की किसी भी संभावना है कि फ़ाइलों सहित होने के लिए बहुत दुर्लभ है), और की है कि बाहर require_onceऔर require, आप का उपयोग करना चाहिए require_onceजब फ़ाइलें जो सहित परिभाषित कार्यों या वर्गों होने के लिए अन्य जगहों पर उपयोग किया जाता है, या डेटाबेस कनेक्शन ऑब्जेक्ट्स की तरह requireत्वरित एकल, और फ़ाइलों को शामिल करने के लिए उपयोग करते हैं जो तुरंत शामिल होने पर सामान करते हैं। किसी भी बड़े वेब एप्लिकेशन में, बाद के प्रकार को शामिल करना असामान्य है।
मार्क अमेरी

7
+1 (एक और सोने का बिल्ला है;)) इस बात से सहमत हैं कि समझदारी require_onceसे सबसे अधिक संभावना उम्मीदवार का उपयोग लगभग हर समय किया जाता है। विकल्पों के बीच छोटे ओवरहेड अंतर को देखते हुए, requireस्क्रिप्ट को रोकना सुनिश्चित करता है, मैं कई परिदृश्यों के बारे में नहीं सोच सकता, जहां कोई एप्लिकेशन फ़ाइल को शामिल किए बिना जीवित रह सकता है। और _onceडुप्लीकेट मुद्दों से बचाता है। जो कोई भी असहमति जताता है, वह जानता है कि वे ऐसा कर रहे हैं जो भी आवेदन या परिदृश्य को चुन सकता है।
जेम्स

हे मेरे पास एक फाइल है जिसे कभी-कभी इंडेक्स पेज और मैन टाइम में सीधे शामिल किया जाता है (Home.php) ........... अब मैं पहले से ही इंडेक्स पेज पर कॉन्फिग फाइल को फंक्शन की आवश्यकता के साथ शामिल करता हूं अब मैं आवश्यकता_ का उपयोग कर सकता हूं in.pp को रोकने के लिए शामिल हैं
रविंदर पायल

@RavinderPayal खैर, मेरी पहली सलाह यह है कि फ्रंट-कंट्रोलर का उपयोग करके खुद को सिरदर्द से बचाएं! सिर्फ इसलिए कि कोई उपयोगकर्ता example.com/home कहता है, इसका मतलब है कि आपके पास पूरी तरह से अलग घर होना चाहिए। php! इसके बजाय / home / बस index.php या front.php के सामने नियंत्रक के माध्यम से मार्ग करना चाहिए। केवल php वास्तव में oldschool "प्रति पृष्ठ एक स्क्रिप्ट" के लिए किसी भी अधिक दृष्टिकोण की अनुमति देता है, और मुझ पर भरोसा करता है, यह सबसे अच्छा तरीका नहीं है। लेकिन अगर आपके पास एक अलग home.php और index.php है, तो MOT GO IN BOTH में कुछ भी एक लाइब्रेरी फ़ाइल या टेम्प्लेट में होना चाहिए, ../templates/home.tpl या ../view/home.view.php तुम्हे पता हैं?
काज़काई

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

36

_Once फ़ंक्शंस और बिना _once फ़ंक्शंस के बीच अंतर: बिना _once कोड के फिर से शामिल किया जाएगा जबकि _once फ़ंक्शंस के साथ PHP शामिल फ़ाइलों का ट्रैक रखता है और इसे केवल एक बार शामिल करेगा।

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


1
वाह छोटी और सरल!
Vlad

31

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

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

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

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


22

जब भी आप उपयोग require_once()कर रहे हों, तब किसी अन्य फ़ाइल को शामिल करने के लिए फ़ाइल में उपयोग किया जा सकता है जब आपको वर्तमान फ़ाइल में केवल एक बार कॉल की आवश्यकता होती है। यहाँ उदाहरण में मेरे पास एक test1.php है।

<?php  
echo "today is:".date("Y-m-d");  
?>  

और एक अन्य फाइल में जिसे मैंने test2.php नाम दिया है

<?php  
require_once('test1.php');  
require_once('test1.php');  
?>

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

जब भी आप _ शामिल_नसे () का उपयोग कर रहे हों ’का उपयोग फाइल में तब किया जा सकता है जब दूसरी फ़ाइल को शामिल करने के लिए आपको वर्तमान फ़ाइल में एक से अधिक बार फाइल की आवश्यकता होती है। यहाँ उदाहरण में मेरे पास test3.php नाम की एक फाइल है।

<?php  
echo "today is:".date("Y-m-d");  
?> 

और दूसरी फाइल में जिसे मैंने test4.php नाम दिया है

<?php  
include_once('test3.php');  
include_once('test3.php');  
?>

जैसा कि आप देख रहे हैं कि test3 फ़ाइल सहित m फाइल को एक बार शामिल करेगा लेकिन आगे के निष्पादन को रोक देगा।


'सलाह से बेहतर उदाहरण है'
रमेश किथिरी हेटिआराची

19

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

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


18

आपको फ़ाइलों में व्यवस्थित वर्ग और फ़ंक्शन परिभाषाएँ रखनी चाहिए।

निर्भरता (वर्ग, कार्य, स्थिरांक) require_once()लोड करने के लिए उपयोग करें ।

टेम्पलेट जैसी फ़ाइलोंrequire() को लोड करने के लिए उपयोग करें ।

वैकल्पिक निर्भरता (वर्ग, कार्य, स्थिरांक) include_once()लोड करने के लिए उपयोग करें ।

वैकल्पिक टेम्पलेट जैसी फ़ाइलोंinclude() को लोड करने के लिए उपयोग करें ।


16

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

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

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

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

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

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

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


ऑटोलैडर का उल्लेख करने के लिए +1। हालाँकि वह अंतिम वाक्य विवादित है। काफी बार आप include()अपने अस्थायी इंजन को लागू करने के लिए आउटपुट बफर में लिपटे एक का उपयोग करेंगे ।
खतरनाक

इसके अलावा, आधुनिक पाठ संपादकों और आधुनिक PHP को देखते हुए, require()बड़ी फ़ाइलों को विभाजित करने के लिए लगभग कोई भी उपयोग नहीं करता है।
खतरनाक

मुझे एक ही मुद्दे का सामना करना पड़ा जब require_onceएक फ़ंक्शन के अंदर PHPMailer के लिए उपयोग किया जाता है, और मेरे ऑटोलैडर को $mailकोड में बाद में आवश्यक चर को परिभाषित करता है , इसलिए अगले require_onceको अनदेखा कर दिया जाता है, जो $mailकि प्रारंभ नहीं हुआ! समाधान केवल requireफ़ंक्शन कॉल के बाद उपयोग करने के लिए था ।
यूसुफ

@haz क्या कोई कारण है कि आप requireउन मामलों में उपयोग नहीं करते हैं ?
PHPst

@ChristofferBubach LOL
PHPst

15

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

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

includeकेवल एक E_WARNINGत्रुटि उत्पन्न करता है अगर यह विफल रहता है जो अधिक या कम मौन है।

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


के लिए *_once():

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

उसी पर लागू होता है require_once()


संदर्भ: require(),include_once()


requireE_COMPILE_ERROR देता है, E_ERROR नहीं।
यौषा अलाय्यूब

ऐसा लगता है कि पिछले 7 वर्षों में यह बदल गया।
फेलिक्स क्लिंग

9

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


8

प्राधिकरण की तरह महत्वपूर्ण भागों की आवश्यकता है, और अन्य सभी को शामिल करें।

मल्टीपल में केवल बहुत खराब डिज़ाइन शामिल हैं और इसे बिल्कुल टाला जाना चाहिए। तो, * _once वास्तव में कोई फर्क नहीं पड़ता।


7

शामिल करें / आवश्यकता करें आप एक से अधिक फ़ाइल को एक से अधिक बार भी शामिल कर सकते हैं:

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

require_once / include_once

पीएचपी को शामिल करना / शामिल करने की आवश्यकता समान है यदि फ़ाइल पहले से ही शामिल है, और यदि ऐसा है, तो इसे फिर से शामिल करने (आवश्यकता) को शामिल न करें।


5

include()यह फ़ाइल नहीं मिलने पर एक चेतावनी उत्पन्न करेगा, लेकिन require_once()एक घातक त्रुटि उत्पन्न करेगा।

एक और बात यह है कि फ़ाइल पहले शामिल है। फिर require_once()इसे फिर से शामिल नहीं करेंगे।


5

मैं नीचे दिए गए फ़ंक्शन का उपयोग कर रहा था:

function doSomething() {
    require_once(xyz.php);
    ....
}

Xyz.php में निरंतर मूल्य घोषित किए गए थे।

मुझे इस doSomething () फ़ंक्शन को किसी अन्य PHP स्क्रिप्ट फ़ाइल से कॉल करना होगा।

लेकिन मैंने इस फ़ंक्शन को लूप में कॉल करते समय व्यवहार को देखा, पहले पुनरावृत्ति के लिए doSomething () के भीतर निरंतर मान मिल रहा था xyz.php, लेकिन बाद में प्रत्येक पुनरावृत्ति doSomething()में घोषित निरंतर मान प्राप्त करने में सक्षम नहीं था xyz.php

मैंने अपनी समस्या हल कर ली require_once()है include(), अद्यतन doSomething()कोड निम्नानुसार है:

function doSomething() {
    include(xyz.php);
    ....
}

अब प्रत्येक पुनरावृति कॉल doSomething()निरंतर मूल्यों को परिभाषित करता है xyz.php


4

से मैनुअल :

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

_once()वेरिएंट के लिए भी यही सच है ।


4

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


3

 

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

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

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

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

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

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

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


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

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

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


1

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

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

उदाहरण:

Require 'filename'
Require_once 'filename'
Include 'filename'

इसमें एक शामिल_ कार्य भी है जिसमें एक बार एक फ़ाइल शामिल है।

Include_once 'filename'

जहां मेरे पास मेरे फोन से टाइप हो रहा है, वहां बड़े अक्षरों का प्रयोग न करें।


1

एक बात जिस पर मैंने गौर किया, शामिल करते समय मैं केवल उस फ़ाइल से सम्मिलित फ़ाइलों के कार्यों को शामिल कर सकता हूं जिसमें यह शामिल था। आवश्यकता_ऑनसे के साथ, मैं उस फ़ंक्शन को दूसरी आवश्यक_ऑन फ़ाइल में चला सकता हूं।

यह भी: मैं जोड़ने की सलाह देता हूं

if(file_exists($RequiredFile)){
    require_once($RequiredFile);
}else{
  die('Error: File Does Not Exist');
}

क्योंकि जब requ_once पृष्ठ को मारता है, तो यह कभी-कभी आपकी वेबसाइट फ़ाइलों की निर्देशिका को प्रतिध्वनित कर सकता है

यहाँ एक कस्टम फंक्शन है जिसे मुझे फ़ाइलों की आवश्यकता है:

function addFile($file, $type = 'php', $important=false){
    //site-content is a directory where I store all the files that I plan to require_once
    //the site-content directory has "deny from all" in its .htaccess file to block direct connections
    if($type && file_exists('site-content/'.$file.'.'.$type) && !is_dir('site-content/'.$file.'.'.$type)){
        //!is_dir checks that the file is not a folder
        require_once('site-content/'.$file.'.'.$type);
        return 'site-content/'.$file.'.'.$type;
    }else if(!$type && file_exists('site-content/'.$file) && !is_dir('site-content/'.$file)){
        //if you set "$type=false" you can add the file type (.php, .ect) to the end of the "$file" (useful for requiring files named after changing vars)
        require_once('site-content/'.$file);
        return 'site-content/'.$file;
    }else if($important){
        //if you set $important to true, the function will kill the page (which also prevents accidentally echoing the main directory path of the server)
        die('Server Error: Files Missing');
        return false;
    }else{
        //the function returns false if the file does not exist, so you can check if your functions were successfully added
        return false;
    }
}

उपयोग उदाहरण:

$success = addFile('functions/common');

if($success){
    commonFunction();
}else{
    fallbackFunction();
}

0

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

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

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


0

यह अक्सर एक मामला है कि क्या आप एक ग्राहक पुस्तकालय को सशर्त लोड करना चाहते हैं, या आगे बढ़ें और लोड करें कि आप इसका उपयोग करने जा रहे हैं या नहीं।

यहाँ ठोस उदाहरण है; pcj ने क्या कहा, इस पर विस्तार से बताते हैं।

मान लें कि आपके पास अपने डेटाबेस उपयोगकर्ता नाम और पासवर्ड को संग्रहीत करने वाली कॉन्फ़िगरेशन फ़ाइल है (conf.php):

<?php
//my site configuration file

//For Database
$location='localhost';
$dbuser='yourname';
$userpw='yourpassword';
$database='nameofdatabase';
?>

और एक स्थिर फ़ंक्शन के साथ एक वर्ग जो डेटाबेस का उपयोग करता है:

<?php
class UsedInLoop {
    public static function databaseQuery(){
        require(/path/to/conf.php);                //require_once will not work here
        $db = new mysqli($location, $dbuser, $userpw, $database);
        //yada yada yada
    }
}
?>

और उस स्थैतिक फ़ंक्शन का उपयोग किसी अन्य फ़ंक्शन के अंदर किया जाता है जिसे लूप के अंदर पुनरावृत्ति कहा जा रहा है:

<?php
require_once('path/to/arbitraryObject.php');  //either will likely be OK at this level
$obj = new arbitraryObject();
foreach($array as $element){
    $obj->myFunction();
}
?>

आपको केवल एक बार कक्षा की आवश्यकता / शामिल कर सकते हैं। यदि आपको अपने लूप के प्रत्येक पुनरावृत्ति पर इसकी आवश्यकता / शामिल है, तो आपको एक त्रुटि मिलेगी। हालाँकि, आपको अपनी फ़ंक्शनल फ़ाइल को हर बार शामिल करना होगा जब स्टैटिक फंक्शन कहा जाता है।

<?php
class arbitraryObject {
    public function myFunction(){
        require_once(/path/to/UsedInLoop.php);   //This must be require_once. require() will not work
        UsedInLoop::databaseQuery();
    }
}
?>

बेशक, इसे फंक्शन से बाहर ले जाना उस समस्या का हल हो सकता है:

<?php
require(/path/to/UsedInLoop.php);   //now require() is fine   
class arbitraryObject {
    public function myFunction(){
        UsedInLoop::databaseQuery();
    }
}
?>

जब तक आप एक वर्ग को लोड करने के ओवरहेड से चिंतित हैं जो केवल कुछ शर्तों में उपयोग किया जा सकता है और जब यह नहीं है तो इसे लोड नहीं करना चाहता।


-1

requireअधिक से अधिक उपरि है include, क्योंकि इसे पहले फ़ाइल को पार्स करना है। के requiresसाथ प्रतिस्थापित includesअक्सर एक अच्छा अनुकूलन तकनीक है।


2
मुझे पता है कि यह देर से टिप्पणी है, लेकिन यह वास्तव में सच नहीं है। requireफ़ाइल को किसी भी अधिक से पार्स नहीं includeकरता है। _onceउन कार्यों प्रत्येक के संस्करणों भूमि के ऊपर का एक सा है, लेकिन अन्य लोगों की तरह कहा है, यह सबसे अनुप्रयोगों में नगण्य के काफी करीब है।
आउंस १०

-2

बस आवश्यकता का उपयोग करें और शामिल करें।

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

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.