2015-01-06 8 views
6

मैं कैसे पीएचपी काम में नामस्थान की मेरी समझ के आधार पर निम्न निर्देशिका संरचना का उपयोग करें:कस्टम पुस्तकालयों के लिए संगीतकार में पीएसआर -4 ऑटोलोडिंग कैसे काम करता है?

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName> 
:

project_root 
    app/ 
    | lib/ 
    | | MyCompany/ 
    | | | Utility/ 
    | | | | Logger.php 
    | | | Core/ 
    | | | | User.php 
vendor/ 
    composer/ 
    symfony/ 
    guzzle/ 
bootstrap.php 
composer.json 

PSR-4 विनिर्देश के अनुसार, एक पूरी तरह से योग्य वर्ग के नाम निम्नलिखित रूप है

प्रश्न 1:

उपरोक्त मेरी निर्देशिका संरचना से, क्या नीचे सही धारणा है?

  • NamespaceName = MyCompany
  • SubNamespaceNames = उपयोगिता | कोर
  • कक्षा नाम = लॉगर | उपयोगकर्ता

प्रश्न 2:

मेरी bootstrap.php फ़ाइल निम्न शामिल हैं:

<?php 
require 'vendor/autoload.php'; 

कैसे होगा मैं autoload को composer.json की configure the 'autoload' अनुभाग MyCompany निर्देशिका में कक्षाएं ? इस तरह की है कि मैं bootstrap.php

उत्तर

5

प्रलेखन आप लिंक से लिया में लॉगर का एक उदाहरण बनाने में सक्षम हो जाएगा:

{ 
    "autoload": { 
     "psr-4": { 
      "MyCompany\\": "app/lib/MyCompany/", 
     } 
    } 
} 

यह सुंदर आत्म व्याख्यात्मक, यह बस autoloader कि app/lib/MyCompany जड़ है बताता है MyCompany\ नामस्थान के लिए।

आप कक्षा को \MyCompany\Utility\Logger के रूप में उपयोग करने में सक्षम होंगे।

ध्यान दें कि पीएसआर -4 में, पीएसआर -0 के विपरीत, आप आमतौर पर निर्देशिका संरचना से MyCompany छोड़ देंगे, और बस app/lib/ का उपयोग करें।

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