मैं हमेशा अधिक कुशल तरीकों और नई चीजों को सीखने में रूचि रखता हूं। अभी, मैं प्रत्येक फ़ाइल में कोड <?php include('config.php'); ?>
का उपयोग कर रहा हूं। फाइल फ़ोल्डर संरचना में कहां है, इस पर निर्भर करता है कि मेरे पास <?php include('../config.php'); ?>
या <?php include('../../config.php'); ?>
होगा। मैं इसे और अधिक कुशल कैसे बना सकता हूं? क्या रूट में मेरी config.php है और रूट में सबकुछ बनाने के लिए config.php की आवश्यकता है?config.php कुशलतापूर्वक कैसे शामिल करें?
उत्तर
वहाँ एक रास्ता एक फ़ाइल स्वचालित रूप से शामिल करने के लिए (है ऐसा कर सकते हैं auto_prepend_file
आईएनआई सेटिंग), हालांकि आप जो सबसे बड़ा सुधार कर सकते हैं वह कई PHP फ़ाइलों के उपयोग को छोड़ना है और पूरी वेबसाइट के लिए एक प्रविष्टि बिंदु के रूप में index.php का उपयोग करना है।
मान लीजिए कि आप एक एसओ क्लोन लिखते हैं;) पृष्ठों "प्रश्न", "टैग", "उपयोगकर्ता" आदि के साथ। प्रत्येक पृष्ठ पर आपको कुछ सामान्य PHP सामग्री (डीबी, सत्र) + सामान्य HTML तत्व (हेडर, पाद लेख)। एक लोकप्रिय दृष्टिकोण है कि php फ़ाइलों का एक समूह (question.php, tag.php, users.php) उनमें से प्रत्येक में सामान्य सामान शामिल है। उदाहरण के लिए, users.php इस तो
include 'db.php';
include 'session.php';
include 'html.header.php';
.....users-specific stuff
include 'html.footer.php';
यह काफी थकाऊ (आप कोड के बहुत सारे दोहराना) और अनम्य है की तरह दिखाई देगा (साइट पर सभी पृष्ठों पर एक साइडबार जोड़ने लगता है)। मेरे सुझाव "अंदर बाहर" है कि, एक "आम सामान" फ़ाइल है कि पृष्ठ-विशिष्ट कोड भी शामिल है शामिल हैं बनाने के लिए है:
# index.php
db functions
session functions
html header
$page = isset($_GET['page'])
? preg_replace("/\W+/", "", $_GET['page'])
: "home";
include "$page.php";
html footer
इस प्रकार आप वेबसाइट पर एक भी प्रवेश बिंदु होगा - यह अधिक है लचीला और डीबगिंग के लिए बेहतर है। केवल दोष यह है कि यूआरएल कम "अच्छा" (? user.php बनाम index.php पृष्ठ = उपयोगकर्ता) कर रहे हैं है, लेकिन यह आसानी से mod_rewrite के साथ हल किया जा सकता
विस्तृत करने की देखभाल नहीं करते हैं, तब तक मैं रीयलपाथ (जो बहुत धीमी है) के स्थान पर अधिक कुशल 'dirname' का उपयोग करेगा)? एक सुधार किस तरह से है? प्रदर्शन, रखरखाव, आदि? – nickf
जब तक कुछ प्रकार की templating चल रहा है (जो वहाँ होना होगा) मुझे लगता है कि समस्या का एक reframing के रूप में बहुत अच्छी तरह से काम करता है। – Kzqai
मुझे यह जवाब सबसे अच्छा लगता है। इस प्रक्रिया को तेज़ करने के कई तरीके हैं जैसे कि आपके लिए इसे स्वचालित करने के लिए ढांचे का उपयोग करना। यदि आप चाहें तो मैं कुछ की सिफारिश कर सकता हूं। – Tres
पथ अपने php include path में config.php
युक्त रखो और फिर आप बस कर सकते हैं:
include 'config.php';
या बेहतर अभी तक:
require_once 'config.php';
require
include
से अधिक पसंद किया जाता है क्योंकि यह बजाय एक त्रुटि से चलाता है एक चेतावनी जब किसी फ़ाइल को किसी कारण से शामिल नहीं किया जा सकता है (उदाहरण के लिए फ़ाइल नहीं मिली, अनुमति त्रुटि, आदि)। _once
प्रत्यय यह सुनिश्चित करने के लिए एक अच्छा जोड़ा है कि एक ही फ़ाइल को कई बार अनिवार्य रूप से शामिल नहीं किया गया है।
और कृपया ध्यान रखें कि आप अपने include
कॉल में 'config.php'
आसपास कोष्ठक जरूरत नहीं है। include
PHP में कोई फ़ंक्शन नहीं है। यह एक भाषा निर्माण है। ब्रांड्स केवल एक अनावश्यक समूह के रूप में कार्य करता है जो इस उदाहरण के विपरीत नहीं है: $myVar = (2 + 2);
।
ब्रांड्स पर नोट के लिए विशेष धन्यवाद। – Strawberry
सामान्य रूप से पैस प्रदाताओं की बढ़ती लोकप्रियता और विकास पर्यावरण को विघटित करने के साथ, इसकी अनुशंसा नहीं की जाती है। मान लें कि आप एक वेब ऐप बना रहे हैं और आप अपना कोड साझा करना और प्रोजेक्ट को ट्रांसफर करना चाहते हैं। क्या आप वास्तव में प्रत्येक डेवलपर की आवश्यकता करना चाहते हैं जो परियोजना पर अपने हाथों को अपने ऐप को काम करने के लिए अपने आंतरिक php.ini को कॉन्फ़िगर करना होगा? – Seph
आप एक आधार dir निरंतर
define('BASE_DIR', realpath(__FILE__));
कर सकते हैं
रखो अपने index.php में
तो फिर तुम
include BASE_DIR . 'config.php';
यह कई अलग-अलग उपयोगों के लिए भी आसान है - आपके आवेदन के लिए एक बार परिभाषित कुछ पथ स्थिरांक रखना हमेशा अच्छा होता है। – nickf
मेरे पास आमतौर पर BASE_DIR और DOC_ROOT है .. PHP का उपयोग करने वाली निर्देशिकाओं के लिए BASE_DIR, और HTML सापेक्ष पथ आदि के लिए उपसर्ग के रूप में DOC_ROOT – alex
@Alex - क्या आपको उपयोग करने में सक्षम होने के लिए पृष्ठ एक पर सत्र चर के रूप में BASE_DIR सेट करना होगा गहरे पृष्ठों पर या PHP इसे स्मृति में रखता है? – JM4
विभिन्न विकल्प है कि जोड़ा जा सकता है:
संसाधन फ़ाइल में पथ परिभाषाएं बनाएं जिन्हें आपके स्रोत नियंत्रण में ट्रैक नहीं किया जाएगा। जैसेपरिभाषित करें ('LIB_PATH', '/ home/tchalvak/project /');
एक autoprepend फ़ाइल निर्दिष्ट करें और इसे php.ini में सेट करें। जैसे स्क्रिप्ट की एक वैश्विक, प्रयुक्त-हर जगह सूची सहित, जिसे आप फ्लाई पर जोड़ या घटा सकते हैं।
अंत में, कि मैंने पाया या के साथ आया था पथ-स्ट्रिंग-हेरफेर प्रवंचना का एक छोटा सा है, मैं भूल जाते हैं जो:
require_once(substr(__FILE__, 0, (strpos(__FILE__, 'lib/')))."resources.php");
// एक और नाम से जाना जाता फाइल करने के लिए एक विशिष्ट संबंध में एक फ़ाइल की आवश्यकता होती है, भले ही शामिल वास्तविक पथ का, और किसी भी परिभाषा से निपटने के बिना। मेरी आवश्यक फ़ाइलें मेंजब मैं, मैं स्थिरांक या चर का उपयोग नहीं कर सकते हैं (निरपेक्ष पथ को परिभाषित करने के लिए):
प्लस सीधे फ़ाइल में डालने में एएसएफ़ के ऊपर पथ शामिल है। आश्चर्य की बात है, मैंने वास्तव में ऐसा कभी नहीं किया है। मुझे आश्चर्य है कि परियोजनाओं या कुछ साझा करते समय कोई नुकसान होता है? निश्चित नहीं। – Kzqai
यहाँ कैसे मैं अपने आवश्यक (शामिल) फ़ाइलों के प्रबंधन के बारे जाना है। मुझे लगता है कि इसमें कुछ फायदे हैं:
- मुझे तैनात वेबसाइट के प्रत्येक संस्करण के लिए निरंतर परिवर्तन करने की आवश्यकता नहीं है।
- PHPLint जैसे स्टेटिक विश्लेषण टूल इन प्रकार के समावेशन के साथ काम नहीं करते हैं।
- मेरा संपादक (ग्रहण) मुझे आवश्यक फ़ाइल नाम पर क्लिक करके नियंत्रण फ़ाइल पर नेविगेट करने की अनुमति देता है।
- यह (आवश्यक रास्तों को संपादित करने की आवश्यकता नहीं होती)
- ...
परियोजनाओं के बीच फ़ाइलों को साझा करने के लिए आसान लेकिन ... यह करने के लिए, सभी की आवश्यकता है और रिश्तेदार होने की जरूरत भी शामिल है। डिफ़ॉल्ट रूप से PHP पथ को शामिल करने के लिए बुलाए गए स्क्रिप्ट की वर्तमान निर्देशिका का उपयोग करता है। यह समस्याएं पैदा कर सकता है जब बुलाया स्क्रिप्ट एक ही फ़ोल्डर में नहीं रहते हैं। तो एक ही स्क्रिप्ट के माध्यम से गुजरने वाले सभी अनुरोधों का सुझाव स्वचालित रूप से ऐसी किसी भी समस्या को हटा देता है।
- 1. दो बीएसटी कुशलतापूर्वक कैसे विलय करें?
- 2. As3 - कुशलतापूर्वक सरणी को कैसे साफ़ करें?
- 3. कुशलतापूर्वक OCaml कैसे सीखें?
- 4. उपरोक्त फ़ोल्डर में .php फ़ाइल शामिल करें
- 5. कैसे कुशलतापूर्वक WebSockets
- 6. कुशलतापूर्वक 'foreach'
- 7. वर्डप्रेस प्लगइन में $ wpdb कैसे शामिल करें?
- 8. कुशलतापूर्वक अजगर
- 9. कुशलतापूर्वक सी #
- 10. शून्य से बनावट को कुशलतापूर्वक कैसे प्रारंभ करें?
- 11. असंगत कुशलतापूर्वक
- 12. कुशलतापूर्वक numpy
- 13. कुशलतापूर्वक आर
- 14. कुशलतापूर्वक सरणी
- 15. कैसे जावास्क्रिप्ट में शामिल करें?
- 16. सहायता कैसे शामिल करें '?' Winform
- 17. अद्वितीय क्रमपरिवर्तन ढूँढना कुशलतापूर्वक
- 18. कुशलतापूर्वक एक हेक्स प्रतिनिधित्व
- 19. किसी और चीज से पहले सभी पृष्ठों के लिए स्वचालित रूप से config.php फ़ाइल लोड करें
- 20. एलएलवीएम आईआर में बंद करने में कुशलतापूर्वक कार्यान्वयन कैसे करें?
- 21. एक धारा में int श्रेणियों को कुशलतापूर्वक कैसे मर्ज करें?
- 22. एंड्रॉइड पर संसाधनों से कुशलतापूर्वक लघु सरणी कैसे प्राप्त करें?
- 23. एक आदेशित मैट्रिक्स में कुशलतापूर्वक खोज कैसे करें?
- 24. एक सेट के सभी जोड़े को कुशलतापूर्वक कैसे प्राप्त करें?
- 25. Zipf वितरित संख्याओं को कुशलतापूर्वक कैसे उत्पन्न करें?
- 26. जावा फ़ाइल का आकार कुशलतापूर्वक प्राप्त करें
- 27. std :: atomic कुशलतापूर्वक
- 28. कुशलतापूर्वक भंडारण 7.300.000.000 पंक्तियां
- 29. वेबस्केट का उपयोग ... कुशलतापूर्वक?
- 30. कुशलतापूर्वक एक निर्देशिका
यदि आपका चल रहा अपाचे, http://stackoverflow.com/questions/24622/setting-php-include-path-on-a-per-site-basis एक विकल्प हो सकता है? – zak