2011-01-26 8 views
7

मेरे पास PHP में पथ और फ़ाइलों और/या कक्षाओं सहित पथ के बारे में कुछ प्रश्न हैं।PHP में set_include_path() का उपयोग क्यों करें और विभिन्न फ़ोल्डरों से कक्षाओं को स्वत: कैसे लोड करें?

नीचे कोड का एक सरल स्निपेट है जहां हम कई पथ शामिल कर रहे हैं। मैंने इसे एक और परियोजना में देखा लेकिन मुझे यकीन नहीं है क्यों?

मुझे पिछले 5 वर्षों में मेरी किसी भी परियोजना में set_include_path() का उपयोग कभी नहीं करना पड़ा है।

क्यू 1)
तो क्या वास्तव में एक पथ शामिल की स्थापना का उद्देश्य है? मैंने हमेशा अपने शामिल() कॉल में पथ शामिल किया है।

Q2)
उदाहरण में नीचे इसे और अधिक तो 1 रास्ता तय करता है। यह एकाधिक स्थानों में फ़ाइलों को शामिल करने के लिए कैसे काम करता है, मैं इस उद्देश्य पर उलझन में हूं या यह वास्तव में क्या करता है?

<?php 
// Define App path 
define('APPLICATION_PATH', realpath('../')); 

// Build array of 3 different paths 
$paths = array(
    APPLICATION_PATH, 
    APPLICATION_PATH . '\com', 
    get_include_path() 
); 


/* 
Result of array above... 
Array 
(
    [0] => E:\Web Server\xampp\htdocs\test 
    [1] => E:\Web Server\xampp\htdocs\test\com 
    [2] => .;C:\php5\pear 
) 
*/ 

// Set include path from array above 
// http://us3.php.net/manual/en/function.set-include-path.php 
set_include_path(implode(PATH_SEPARATOR, $paths)); 

?> 

Q3)
यह थोड़ा अलग सवाल है, लेकिन अभी भी शामिल है से संबंधित है। कक्षाओं के लिए नीचे एक सरल ऑटोलोड लोड है। मेरे पास कक्षाओं का फ़ोल्डर होता था और मेरी सभी कक्षा फ़ाइलों को स्वत: लोड करता था। मेरे वर्तमान प्रोजेक्ट में, मेरे पास कक्षाओं की लाइब्रेरी है जो नीचे की तरह ऑटोलोड करने के लिए है, लेकिन फिर मेरे पास एक और अनुभाग भी है जहां मुझे मॉड्यूल निर्देशिका से कक्षा फ़ाइलों को स्वत: लोड करने की आवश्यकता हो सकती है।

तो मैं अपने पुस्तकालय वर्गों autoload करने की आवश्यकता होगी कहीं इस तरह स्थित ....

जड़/शामिल/पुस्तकालय/वर्गों/library_class_files.php

+++ प्लस +++

विभिन्न मॉड्यूल (खाता, संदेश, दोस्तों, फोटो, ब्लॉग, फ़ोरम इत्यादि) के लिए लोड कक्षाएं इस तरह कहीं स्थित हैं ....

जड़/मॉड्यूल/फ़ोरम/modules_class_files.php

2 विभिन्न स्थानों से भार वर्ग फ़ाइलों की आवश्यकता नहीं होगी, लेकिन अगर मैं करते हैं, कैसे मुझे लगता है कि करने के बारे में जाना होगा?

<?php 
//auto include class files that we need on a per page basis 
function __autoload($class_name){ 
    include('library/classes/' .$class_name . '.class.php'); 
} 
?> 

उत्तर

5

Q1: http://php.net/manual/en/ini.core.php#ini.include-path

Q2: हर पथ पर मैन्युअल पीएचपी दोहराता में उल्लेख किया है और अपनी फ़ाइल खोजने की कोशिश करता है।

प्रश्न 3: अधिक आधुनिक SPL Autoloader functionality का उपयोग करके आप जितना चाहें उतने ऑटोलोडर को परिभाषित कर सकते हैं।

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