पीएसआर -4 मानक आपको नामस्थानों के आधार पर एक सख्त फाइल सिस्टम संरचना की आवश्यकता है। मान लें कि src
निर्देशिका में App
नामस्थान के साथ एक ऐप है, तो सभी उप-नामस्थान उपनिर्देशिका दर्पण करेंगे और कक्षा के नाम .php
एक्सटेंशन के बिना फ़ाइल नामों के समान होंगे।
{
"autoload": {
"psr-4": { "App\\": "src/" }
}
}
src/
Foo/
Bar.php <---- App\Foo\Bar class
Baz.php <---- App\Baz class
autoloader तो "जानता" जहां एक निश्चित पूरी तरह से योग्य नाम के वर्ग के लिए देखने के लिए और इसलिए कक्षाओं के लिए फ़ाइलों को सूंघना डंप-autoload आदेश की आवश्यकता नहीं है।
प्रदर्शन मुद्दों को composer dump-autoload --optimize-autoloader
ध्वज, या -o
के साथ हल किया जाता है, जो क्लासमैप ऑटोलोडिंग के समान तरीके से क्लास मैप उत्पन्न करेगा।
दूसरी ओर, classmap autoloading लगभग किसी भी निश्चित फ़ाइल या निर्देशिका संरचना है करने की आवश्यकता नहीं है, यह रिकर्सिवली निर्दिष्ट निर्देशिका और फाइल में .php
और .inc
फ़ाइलों के माध्यम से जाने के लिए और उन में कक्षाओं के लिए सूंघ जाएगा ।
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}
उन वर्गों तो एक सूची (विक्रेता/संगीतकार निर्देशिका में PHP फ़ाइल में कैश) जो autoloading के लिए प्रयोग किया जाता है करने के लिए जोड़ रहे हैं।
किसी भी नए वर्ग को composer dump-autoload
आदेश चलाकर उस सूची में जोड़ा जाना चाहिए।
कक्षा के बिना सादे PHP फ़ाइलों के बारे में क्या? जैसे वैश्विक कार्यों के समूह के साथ सिर्फ एक php फ़ाइल, इसे कैसे जोड़ना है? – Toskan
@Toskan https://getcomposer.org/doc/04-schema.md#files देखें – Finwe