2012-11-19 13 views
7

तो - मैं अपने bootstrap.php में एक साधारण PCR0 ऑटो लोडर, कि विक्रेताओं निर्देशिका से किसी भी PCR0 संगत पुस्तकालय वर्ग लोड करना चाहिए ...संगीतकार में फ़ाइलों को स्वत: लोड करें छोड़ दें?

spl_autoload_register(function($classname) { 
    $path = preg_match('/\\\\/', $classname) 
    ? str_replace('\\', DIRECTORY_SEPARATOR, $classname) 
    : str_replace('_', DIRECTORY_SEPARATOR, $classname); 
    $file = VENDORS_PATH . DIRECTORY_SEPARATOR . $path . '.php'; 
    if (file_exists($file)) { 
     require_once($file); 
    } 
}); 

मुझे यकीन है कि अगर मैं समझता हूँ कि क्यों नहीं कर रहा हूँ है संगीतकार विक्रेताओं निर्देशिका (संगीतकार निर्देशिका और autoload.php फ़ाइल में स्वत: लोडिंग फ़ाइलों को उत्पन्न करता है)?

क्या मैं कंपोज़र को उन ऑटो-लोडर फ़ाइलों को उत्पन्न करने से रोक सकता हूं? या क्या मैं कुछ न कुछ भूल रहा हूं? मुझे नहीं लगता कि मुझे उनकी ज़रूरत है?

उत्तर

4

तीन ऑटोलोड लोड फाइलें हैं, जिनमें से प्रत्येक का एक अलग उद्देश्य है।

  • विक्रेता/autoload.php संगीतकार के ऑटोलोडर प्रारंभ करता है। संगीतकार संगत पुस्तकालयों को लोड होने में सक्षम करने के लिए एक ऑटोलोडर प्रदान करता है।
  • विक्रेता/संगीतकार/autoload_classmap.php इस फ़ाइल का उपयोग क्लासमैप ऑटोलोडर द्वारा किया जाता है, यह पुस्तकालयों के लिए है जो पीएसआर -0 संगत, या उत्पादन वातावरण भी नहीं हैं (क्लासमैप फ़ाइल सिस्टम के माध्यम से लुकअप से तेज है)।
  • विक्रेता/संगीतकार/इस autoload_namespaces.php के लिए PSR-0 autoloading कि संगीतकार

अब आप का उल्लेख आप अपने खुद के PSR-0 classloader, जो आप उपयोग करना चाहिए नहीं कर रहे हैं कि के साथ आता है विन्यास है संगीतकार निर्भरताओं के लिए - आपको बस विक्रेता/autoload.php की आवश्यकता/शामिल करने की आवश्यकता होती है और संगीतकार बाकी की देखभाल करते हैं।

यही कारण है कि ऑटोलोडिंग फ़ाइलों की पीढ़ी को अक्षम करने का कोई विकल्प नहीं है। अंत में संगीतकार आपको लाइब्रेरी का उपयोग करने में सक्षम बनाता है, और आपको आवश्यक सभी लोडिंग प्रदान करके सक्षम बनाता है।

+0

" .. विक्रेता/autoload.php शामिल/शामिल करें और संगीतकार है .. "हमम। आईएमएचओ निर्भरता प्रबंधन और स्वत: लोडिंग अलग-अलग समस्याएं हैं। कुछ लोग उदाहरण के लिए ज़ेंड \ लोडर या ऑटोलोडिंग के लिए अन्य पुस्तकालयों का उपयोग करना पसंद करते हैं। मैं आमतौर पर केवल पीएसआर 0 अनुपालन पुस्तकालयों और बूटस्ट्रैप में यह छोटा स्निपेट का उपयोग करना पसंद करता हूं - और कभी भी विभिन्न लोडिंग रणनीतियों के बारे में चिंता न करें। ज़ेंड/लोडर क्लासमैप्स का भी समर्थन करता है ... –

+0

संगीतकार दस्तावेज़ों से: "पुस्तकालयों के लिए जो स्वत: लोड जानकारी निर्दिष्ट करते हैं, संगीतकार एक विक्रेता/autoload.php फ़ाइल उत्पन्न करता है।" - यह मेरे लिए लगभग लगता है जैसे संगीतकार autoloading के बजाय autoloading प्रस्तुत करता है, फिर भी आप कह रहे हैं कि यह नहीं है? पुस्तकालयों के लिए –

+0

निर्दिष्ट करता है जो आपके द्वारा संगीतकार के माध्यम से स्थापित पुस्तकालयों का अर्थ है। यदि उस लाइब्रेरी के composer.json में जानकारी लोड हो गई है, तो उन स्वत: लोड जानकारी को autoload.php में रखा जाएगा। – ppetermann

0

व्यक्तिगत तौर पर मैं के बाद से परियोजना मैं पर काम कर रहा हूँ एक autoloader कि ठीक काम करता है है .gitignore को उन फ़ाइलों को जोड़ा

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