2012-09-03 11 views
19

मैंने एक नई परियोजना शुरू की है, जहां मैं कुछ निर्भरताओं को संभालने के लिए Composer का उपयोग करता हूं, साथ ही साथ ऑटो-लोडिंग भी करता हूं।संगीतकार ऑटो लोडर के साथ कस्टम कोड प्रबंधन?

मैं केवल संपूर्ण विक्रेता निर्देशिका की बजाय वीसीएस में composer.json फ़ाइल रखता हूं, इसलिए मैं वहां अपना कोड जोड़ना नहीं चाहता हूं।

मुझे अपने स्वयं के प्रोजेक्ट विशिष्ट कोड को कैसे संभालना चाहिए, ताकि यह ऑटो लोड भी हो सके?

उत्तर

39

यह वास्तव में बहुत आसान है। अपने भंडार से विक्रेता निर्देशिका को छोड़कर सही दृष्टिकोण है। आपका कोड एक अलग स्थान (जैसे src) में संग्रहीत किया जाना चाहिए।

कि संगीतकार अपने नाम स्थान (रों) पहचानता बनाने के लिए autoload संपत्ति का उपयोग करें:

{ 
    "autoload": { 
     "psr-4": { 
      "Acme\\": "src/" 
     } 
    } 
} 

मान लिया जाये कि आप psr -4 मानक निम्नलिखित वर्ग के नाम है, यह काम करना चाहिए। वर्ग नाम के कुछ उदाहरण और फाइल सिस्टम पर उनके स्थान नीचे:

  • एक्मे \ कमान \ HelloCommand -> src/कमांड/HelloCommand.php
  • एक्मे \ फार्म \ प्रकार \ EmployeeType -> src/प्रपत्र/टाइप/EmployeeType.php

प्रत्येक वर्ग के लिए नामस्थान परिभाषित करना याद रखें। यहाँ एक्मे \ कमान \ HelloCommand का एक उदाहरण है:

<?php 

namespace Acme\Command; 

class HelloCommand 
{ 
} 

मत भूलना अपने PHP नियंत्रकों में autoloader शामिल करने के लिए:

<?php 

require 'vendor/autoload.php'; 

के बारे में अधिक PSR-4 standard on PHP Framework Interoperability Group पढ़ें।

ध्यान दें कि यदि आप composer.json संपादित करते हैं, तो आपको ऑटोलोडर क्लास पथ रीफ्रेश करने के लिए या तो इंस्टॉल, अपडेट या dump-autoload चलाने की आवश्यकता है।

+2

कोई भी मौका आप एक डमी क्लास या दो के साथ सरल कोड उदाहरणों के साथ उत्तर अपडेट कर सकते हैं? आपके द्वारा लिंक किए गए दस्तावेज़ों को पढ़ने के बावजूद, और विक्रेता/नामों के साथ मेरी निर्देशिका/नेमस्पेसिंग की तुलना करने के बावजूद, मैं अपनी कक्षाओं को लोड नहीं कर सकता। – Letharion

+3

@ लेथरियन ने मेरा जवाब अपडेट किया, उम्मीद है कि इससे मदद मिलेगी। –

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