2009-07-24 14 views
7

में काम शामिल है ठीक है, मैं url/admin पर अपने कस्टम ब्लॉग के लिए एक व्यवस्थापक इंटरफ़ेस बना रहा हूं।PHP बनाना एक उप-निर्देशिका

क्या मेरे लिए रूट निर्देशिका के रूप में (ऑटोलोड सहित) का उपयोग करने में सक्षम होना संभव है।

यदि संभव हो, तो भी मैं नेविगेशन में लिंक को स्वचालित रूप से सही करने में सक्षम होना चाहूंगा ताकि वे/index.php में/admin से प्राप्त होने पर ../index.php में परिवर्तन/परिवर्तन कर सकें।

धन्यवाद, निको

उत्तर

18

इसके लिए सबसे अच्छा अभ्यास के लिए एक 'ABSOLUTE_PATH' निरंतर कि निर्देशिका है कि सब कुछ के नीचे स्थित है में शामिल है परिभाषित करने के लिए है। इसके बाद, आप बस सब कुछ कॉपी और पेस्ट कर सकते हैं, क्योंकि यह 'पूर्ण' पथ को परिभाषित कर रहा है, जो निर्देशिका से निर्देशिका में नहीं बदलता है।

उदाहरण

define("ABS_PATH", $_SERVER['DOCUMENT_ROOT']); 

or 

define("ABS_PATH", dirname(__FILE__)); 
// This defines the path as the directory the file is in. 

तो किसी भी बिंदु पर आप बस इस एक फ़ाइल

include(ABS_PATH . "/path/to/file"); 
+0

आह, लेकिन मुझे यह कैसे पता चलेगा कि यह पथ क्या होना चाहिए? –

+1

शायद आप सर्वर चर के लिए PHP जानकारी को देखना चाहते हैं, या इसे स्वयं परिभाषित करें। यदि आप इसे स्वयं परिभाषित करते हैं, तो सुनिश्चित करें कि यह निर्देशिका है कि सभी फाइलें नीचे आती हैं। –

3

सबसे आसान तरीका पूर्ण pathes/URL का उपयोग करना होगा शामिल करने के लिए कर सकते हैं।

URL के लिए

, एक निरंतर/चर कहीं, कि आपके आवेदन की जड़ को इंगित करता है, की तरह परिभाषित करते हैं:

define('ROOT_URL', 'http://www.example.com'); 

या

$root_url = 'http://www.example.com'; 

और हर कड़ी में इसका इस्तेमाल करते हैं, जैसे:

<a href="{$root_url}/my-page.php">blah</a> 

इस तरह, हमेशा ठीक है (और जिस दिन आप किसी अन्य सर्वर पर अपना प्रोजेक्ट इंस्टॉल करते हैं, या उपनिर्देशक में y, आपके पास केवल एक स्थिर/परिवर्तनीय संशोधित है, और सबकुछ अभी भी काम करता है)

इसमें शामिल/आवश्यकता के लिए हमेशा पूर्ण पेट्स का भी उपयोग करें; एक समाधान dirname उपयोग करने के लिए, इस तरह है: जहाँ आप इस लाइन लिख रहे हैं

include dirname(__FILE__) . '/my_file.php'; 
include dirname(__FILE__) . '/../my-other-file.php'; 

__FILE__, वर्तमान फ़ाइल है, dirname उस फ़ाइल वाली निर्देशिका में पथ (पूर्ण पथ) प्राप्त करता है।

इसके साथ, आपको अपनी फ़ाइलों के सापेक्ष पथों के बारे में चिंता करने की ज़रूरत नहीं है।

+0

पूर्ण पथ के लिए +1 –

+0

क्या पेट पथ आपको धीमा करते हैं? कहें कि क्या आप सीधे अपने लिंक नहीं रखते हैं, लेकिन प्रोग्राम प्रवाह में नीचे। – Smandoli

0

फिर भी एक और जवाब पहले दो सुझावों के संयोजन के समान होगा। तब

define('ABSPATH', dirname(__FILE__).'/'); 

, यह सोचते हैं कि config.php जरूरतों साइट के कई फाइलों में शामिल किया जाना है तो आप यह पूरा करने के लिए निम्न कथन का उपयोग कर सकते हैं:: आप लगातार निर्धारित कर सकते हैं

include(ABSPATH.'config.php'); 

आशा इस मदद करता है।

0

अतीत में functions.php के लिए मैंने जो अन्य विकल्प उपयोग किया है वह एक वर्ग ऑटोलोडर है।

//Class Autoloader 
spl_autoload_register(function ($className) { 

    $className = strtolower($className); 
    $path = "includes/{$className}.php"; 

    if (file_exists($path)) { 

     require_once($path); 

    } else { 

     die("The file {$className}.php could not be found."); 

    } 
}); 

यह कुछ निश्चित परिस्थितियों में काम करता है और मेरे लिए उपयोगी है अतीत में जब मैं एक पूर्ण $ जड़ url निर्धारित नहीं करना चाहती।

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