छोटों के लिए संगीतकार

शुभ दिन

जब मैंने पहली बार संगीतकार के साथ पेश किया, तो मैंने अपने लिए एक छोटी सी चीट शीट तैयार की और अब, थोड़ी देर के बाद, मैंने इसे थोड़ा संशोधित रूप में जनता के सामने पेश किया।
यह प्रकाशन उन लोगों के लिए प्रासंगिक है, जो पहली बार, PHP के लिए एक अपरिहार्य पैकेज प्रबंधक में आए हैं।

तो, संगीतकार PHP के लिए एक पैकेज प्रबंधक है।

इसके उपयोग का सबसे सरल उदाहरण क्या है?


इस परियोजना को एक उदाहरण के रूप में लें।
संक्षेप में: यह वीके एपीआई में काम करने के लिए स्क्रिप्ट का एक सेट है
तदनुसार, इन लिपियों के संचालन के लिए आपको कई पुस्तकालयों की आवश्यकता होती है
लाइब्रेरी कंपोजर में सूचीबद्ध हैं। जेसन फाइल - कंपोजर के साथ काम करते समय एक महत्वपूर्ण फाइल

उदाहरण संगीतकार। json:

छवि

यह परियोजना 5 पुस्तकालयों का उपयोग करती है। तदनुसार, यदि डेवलपर इस परियोजना को गितुब पर प्रकाशित करने का निर्णय लेता है, तो उसे बस स्क्रिप्ट फ़ोल्डर को शलजम में छोड़ना होगा और कंपोजर.जेसन की रचना करनी होगी, जो इस परियोजना के काम करने के लिए आवश्यक पुस्तकालयों का वर्णन करेगा। सरलता स्पष्ट है: शलजम में, आपको फ़ाइलों के बाद ट्रेलर के साथ सभी आवश्यक पुस्तकालयों को खींचने की आवश्यकता नहीं है। यह कम जगह लेता है, इस परियोजना को वितरित करना आसान है।

कार्य उदाहरण:

प्रोजेक्ट डाउनलोड करें

छवि

स्क्रिप्ट में फ़ोल्डर सीधे प्रोजेक्ट की स्क्रिप्ट होते हैं, जिसके लिए इन 5 पैकेजों की आवश्यकता होती है।

हम संकुल की स्थापना शुरू करते हैं:

छवि

स्थापना के बाद, विक्रेता फ़ोल्डर दिखाई देता है, जहां स्थापित पैकेज जोड़े जाते हैं और autoload.php फ़ाइल बनाई जाती है

छवि

हम इस फ़ाइल को प्रोजेक्ट से कनेक्ट करते हैं और यही है - लाइब्रेरी जुड़े हुए हैं, आप सुरक्षित रूप से उनके साथ काम कर सकते हैं।

छवि

सादगी स्पष्ट है: आपको पुस्तकालयों को डाउनलोड करने और उनकी निर्भरता को खुद से जोड़ने की आवश्यकता नहीं है, संगीतकार आपके लिए सब कुछ करेंगे। और यह पूरा बंडल एक सिंगल ऑटोलैड. एफपी फाइल के साथ जुड़ा हुआ है
सभी पैकेज जो विक्रेता में हैं, उन्हें ऑटोलैडर में जोड़ा जाता है। ऐसा करने के लिए, संगीतकार कंपोज़र.जेसन फ़ाइलों पर निर्भर करता है, जो हर पैकेज में होना चाहिए। कंपोज़र.जॉन पैकेज का गठन पैकेज डेवलपर का कार्य है; पैकेज के उपभोक्ता को केवल कंपोज़र.जॉन प्रोजेक्ट में वर्णन करना होगा जो पैकेजों को जोड़ने की आवश्यकता है।

यह एक उदाहरण कंपोजर है। परियोजना परियोजना:

छवि

यह एक उदाहरण कंपोजर है। जेसन पैकेज:

छवि

आवश्यकता अनुभाग में, इस पैकेज की निर्भरता दर्ज की गई है - guzzle http लाइब्रेरी, जो कि काम करने के लिए गेटजम्प / vk लाइब्रेरी के लिए आवश्यक है। इस मामले में, i.e. पैकेजों के उपभोक्ता के दृष्टिकोण से, सभी प्रकार की पैकेज निर्भरताएं हमारी "चिंता" नहीं हैं, संगीतकार निर्भरता का पता लगाएगा।

पैकेज का नाम स्थान ऑटोलैड अनुभाग में पंजीकृत है।

छवि

getjump \\ Vk \\ - नेमस्पेस नाम
src / getjump / Vk / - निर्देशिका जहां पैकेज कक्षाओं के साथ फाइल स्थित हैं
प्रोजेक्ट में इस लाइब्रेरी के साथ काम करें:

छवि

कोर और फ्रेंड्स लाइब्रेरी क्लासेस हैं जिन्हें PSR-4 मानक के अनुसार src फ़ोल्डर में रखा और पंजीकृत किया गया है। फिर, पैकेज संरचना को आकार देना पैकेज निर्माता का काम है।
यह हमारे लिए पर्याप्त है, पैकेज के उपभोक्ता के रूप में, हमारी परियोजना में पंजीकरण करने के लिए
शामिल करें '../vendor/autoload.php';
और ये सभी वर्ग और नामस्थान ठीक काम करेंगे।
इस मामले में, हमें एक ऑटोलैडर को परेशान करने और लिखने की आवश्यकता नहीं है। इंस्टॉल कमांड चलाने के दौरान कंपोजर खुद ऐसा करेगा।

स्थापना


विश्व स्तर पर संगीतकार स्थापित करें


1) सबसे पहले आपको वातावरण परिवर्तनीय पथ में पंजीकृत होने के लिए PHP दुभाषिया के साथ निर्देशिका के लिए पथ की आवश्यकता है।
जांचें कि क्या यह ऐसा है:
php –version

छवि

यदि निष्कर्ष इस तरह है, तो आप इस चरण को छोड़ सकते हैं
उदाहरण के लिए, विंडोज 7
सिस्टम -> उन्नत सिस्टम सेटिंग्स -> उन्नत -> पर्यावरण चर

अगला, हम पथ चर में दिलचस्पी लेंगे:

छवि

दुभाषिया के लिए रास्ता दर्ज करें

छवि
छवि

* प्राचीन काल से, मेरे कंप्यूटर पर xampp असेंबली है, यहाँ असेंबली की आवश्यकता नहीं है, लेकिन इसमें से दुभाषिया काफी उपयुक्त है (PHP संस्करण - 5.6)।

2) टर्मिनल को पुनरारंभ करें।
एक निर्देशिका बनाएँ और संगीतकार स्थापित करें (मैं डिस्क डी पर डाल)
डी:
सीडी /
mkdir बिन
सीडी बिन
php -r "readfile ('https://getcomposer.org/installer');" | php
इको php "% ~ dp0composer.phar"% *> कंपोजर.बीएटी

छवि

3) पर्यावरण चर पथ के लिए composer.bat में पथ जोड़ें, उदाहरण के लिए D: \ bin के लिए इसे काम करना चाहिए:

छवि

इसके अतिरिक्त पथ में जोड़ा जा सकता है
D: \ Users \% उपयोगकर्ता नाम% \ AppData \ Roaming \ संगीतकार \ विक्रेता \ bin \
संगीतकार के माध्यम से स्थापित उपकरण का उपयोग करने के लिए इसे और अधिक सुविधाजनक बनाने के लिए।
(मेरे पास ड्राइव डी पर स्थित उपयोगकर्ता फ़ोल्डर है, और इसके लिए सी पर एक सिमलिंक बनाया गया था)।
यही है, संगीतकार स्थापित है और जाने के लिए तैयार है।

एक और: स्थापना के दौरान, आप एक त्रुटि पकड़ सकते हैं
[RuntimeException]
संगीतकार को सही ढंग से चलाने के लिए APPDATA या COMPOSER_HOME पर्यावरण चर सेट किया जाना चाहिए
यहाँ समाधान github.com/composer/composer/issues/2033 पाया गया
APPDATA चर को D: \ Users \ GSU \ AppData \ Roaming के साथ जोड़ें

छवि

स्थानीय रूप से संगीतकार स्थापित करें


स्थानीय रूप से संगीतकार स्थापित करने का एक विकल्प है, लेकिन ज्यादातर मामलों में इसके लिए कोई स्पष्ट आवश्यकता नहीं है।
हालांकि, यहां स्थापना और भी सरल है।
क्योंकि कार्यक्रम विश्व स्तर पर स्थापित नहीं है, आपको एक बूट फ़ाइल (संगीतकार मिनी-प्रोग्राम) की आवश्यकता है, इसे लोड करने के लिए हम कमांड लिखते हैं:
php -r "readfile ('https://getcomposer.org/installer');" | php
अब कंपोजर.फार फाइल प्रोजेक्ट डायरेक्टरी में दिखाई दी है
हर चीज का उपयोग किया जा सकता है।
php कंपोज़र। phar को [पैकेज नाम] की आवश्यकता है

वैश्विक और स्थानीय स्थापना के बीच अंतर


स्थानीय और वैश्विक प्रतिष्ठानों के लिए कमांड अलग-अलग तरीके से चलते हैं:

उदाहरण के लिए:
स्थानीय रूप से: php कंपोज़र.फायर को silex / silex ~ 1.1 की आवश्यकता होती है
विश्व स्तर पर: संगीतकार को silex / silex ~ 1.1 की आवश्यकता होती है

स्थानीय रूप से इंस्टॉल करते समय, आपको हर बार इंस्टॉलेशन फ़ाइल को वर्तमान प्रोजेक्ट फ़ोल्डर में डाउनलोड करना होगा
php -r "readfile ('https://getcomposer.org/installer');" | php

एक वैश्विक स्थापना में, इस फ़ाइल की आवश्यकता नहीं है। संगीतकार किसी भी वर्तमान निर्देशिका में शुरू होता है।

आदेशों


इंस्टॉल करें - कंपोजर में निर्धारित पैकेज। json
अद्यतन - अद्यतन संकुल
डम्पोटोलोड - पुनर्निर्माण ऑटोलैडर
somepackage / somepackage की आवश्यकता होती है: someversion - एक नया पैकेज जोड़ें (डिफ़ॉल्ट रूप से, पैकेज आधिकारिक रिपॉजिटरी से इंस्टॉल किए जाते हैं)। स्थापना के दौरान, पैकेज composer.json में लिखा जाता है
update --lock - composer.lock लॉक फाइल को अपडेट करें
config --global cache-files-maxsize "2048MiB" - एक कॉन्फ़िगरेशन पैरामीटर बदलने का उदाहरण
--profile - किसी भी कमांड में इस पैरामीटर को जोड़ने से निष्पादन समय और उपयोग की जाने वाली मेमोरी की मात्रा प्रदर्शित हो सकेगी
--verbose - किए जा रहे ऑपरेशन के बारे में विस्तृत जानकारी
शो - स्थापित - प्रत्येक के विवरण के साथ स्थापित संकुल की एक सूची
show --platform - PHP जानकारी
--dry-run - कमांड निष्पादन का पूर्वाभ्यास। इसे कमांड इंस्टॉल करने और अपडेट करने के लिए जोड़ा जा सकता है। एक कमांड के निष्पादन को सीधे निष्पादित किए बिना अनुकरण करता है। यह जांचने के लिए आवश्यक है कि संकुल और निर्भरता की स्थापना सफल है या नहीं।
remove - पैकेज निकालें। आवश्यकता के ठीक विपरीत

सिंटेक्स संगीतकार। json


पैकेज का नामकरण और पैकेज विवरण विकल्प

पैकेज का नाम स्लैश द्वारा अलग किए गए दो भागों में होता है: विक्रेता का नाम और लाइब्रेरी का नाम।

छवि

यदि पैकेज PSR-4 मानक के अनुसार डिज़ाइन किया गया है, लेकिन packagist.org पर प्रकाशित नहीं किया गया है, लेकिन github पर, तो पैकेज संस्करण के बजाय, आपको इस पैकेज के लिए एक शाखा और रिपॉजिटरी पंजीकृत करने की आवश्यकता है:

छवि

एक पुस्तकालय को जोड़ने का एक उदाहरण जो गितुब पर स्थित है, लेकिन यह PSR-4 मानक द्वारा तैयार नहीं किया गया है, लेकिन कक्षाओं और कार्यों के साथ फाइलों का एक सामान्य ढेर है।

नमूना देखें:

छवि

Pqr / सुपरलिब - यह वही "गलत" लाइब्रेरी है।

रिपॉजिटरी सेक्शन में, हम इसके लिए ऐसा निर्माण लिखते हैं

छवि

मुख्य बिंदु ऑटोलैड अनुभाग है, यहां हम उन फ़ाइलों को निर्दिष्ट करते हैं जो हमें कक्षाओं और कार्यों के साथ चाहिए।
पुस्तकालय संरचना:

छवि

फ़ाइल सामग्री:

छवि
छवि

तदनुसार, परियोजना में, getCurrentTime () को कॉल कुछ इस तरह दिखाई देगा:
$ टाइमर = नया pqr \ superlib \ TimerClass;
इको $ टाइमर-> getCurrentTime ();

वर्ज़निंग


मान्य पैकेज संस्करणों को निर्दिष्ट करते समय, आप सटीक पत्राचार (1.2.3), तुलना ऑपरेटरों (<1.2.3), इन ऑपरेटरों के संयोजन (> 1.2.3 <1.3), "अंतिम उपलब्ध" (1.2। *), टिल्ड सिंबल का उपयोग कर सकते हैं। (~ 1.2.3) और सम्मिलन चिह्न (^ 1.2.3)।
टिल्ड के संकेत (~ 1.2.3) में 1.3 तक सभी संस्करण शामिल होंगे (समावेशी नहीं), क्योंकि सिमेंटिक संस्करण में यह नई कार्यक्षमता को पेश करने का क्षण है। इस मामले में, स्थिर लघु संस्करणों में से अंतिम प्राप्त किया जाएगा। यानी केवल अंतिम अंक बदल जाएगा - 1.2.5, 1.2.8, आदि।

सम्मिलन चिह्न का संकेत (^ 1.2.3) का शाब्दिक अर्थ है "केवल महत्वपूर्ण परिवर्तनों से सावधान रहना" और इसमें 2.0 तक के संस्करण शामिल होंगे। सिमेंटिक संस्करण के संबंध में, मुख्य संस्करण में बदलाव परियोजना के लिए महत्वपूर्ण परिवर्तन करने का क्षण है, इसलिए संस्करण 1.3, 1.4 और 1.9 उपयुक्त हैं, जबकि 2.0 अब नहीं है।
यानी केवल पहला अंक नहीं बदलता है।

Tilda: ~ 1.2.3 किसी संस्करण को निर्दिष्ट करने का सबसे आम और सुरक्षित तरीका है।

फाइल संगीतकार


कंपोज़र.लॉक फ़ाइल इंस्टॉल की गई निर्भरता और उनके संस्करणों की वर्तमान सूची को सहेजती है। इस प्रकार, उस समय जब निर्भरता संस्करण पहले से ही अपडेट किए गए हैं (अपडेट कमांड), अन्य लोग जो आपकी परियोजना को क्लोन करेंगे, उन्हें समान संस्करण प्राप्त होंगे। यह आपको यह सुनिश्चित करने की अनुमति देता है कि आपकी परियोजना को प्राप्त करने वाला हर कोई बैच वातावरण है जो आपके द्वारा उपयोग किए गए विकास के समान है, और संस्करण अपग्रेड के कारण उत्पन्न होने वाली त्रुटियों से बचने में मदद करता है।

हर बार अपडेट कमांड निष्पादित होने के बाद, अपडेट किए गए पैकेज के संस्करण कंपोजर .lock में पंजीकृत होते हैं। यह फ़ाइल संस्करण नियंत्रण प्रणाली के तहत धकेल दी जाती है, और नए सर्वर पर पैकेज स्थापित करते समय, इस फ़ाइल में पंजीकृत पैकेजों के उन संस्करणों को वितरित किया जाएगा। इंस्टॉल कमांड को निष्पादित करते समय, संगीतकार मुख्य रूप से composer.lock पर निर्भर करेगा। इस प्रकार, संस्करणों के संदर्भ में समान पैकेज वातावरण को विभिन्न सर्वरों पर स्थापित करने की गारंटी दी जाएगी।

इसके अलावा, composer.lock फ़ाइल में composer.json फ़ाइल का हैश है।
और अगर json फाइल को एडिट किया गया है, तो संगीतकार आपको चेतावनी देगा कि लॉक फाइल json फाइल से मेल नहीं खाती है।

इस स्थिति में, आपको कंपोज़र अपडेट --लॉक कमांड को चलाने की आवश्यकता है, जो कंपोज़र को अपडेट करेगा।

छवि
छवि
छवि
छवि

संयुक्ताक्षर का उपयोग करने के संदर्भ में स्थापित और अद्यतन के बीच का अंतर


कंपोज़र इंस्टाल कमांड निम्न कार्य करता है:

जाँचता है कि कंपोज़र मौजूद है।

- यदि नहीं, तो निर्भरता को हल करता है और इसे बनाता है
- अगर कंपोज़र .lock मौजूद है, तो इसमें निर्दिष्ट संस्करण इंस्टॉल करता है

संगीतकार अद्यतन आदेश:

- संगीतकार की जाँच करता है
- इस फ़ाइल में निर्दिष्ट लोगों के आधार पर नवीनतम संस्करण निर्धारित करता है
- नवीनतम संस्करण स्थापित करता है
- संस्थापित के अनुसार अपडेट कंपोजर ।लॉक

परियोजना निर्माता के दृष्टिकोण से उपयोग का उदाहरण


स्थापित पैकेज के बिना एक परियोजना है

छवि

कुछ पुस्तकालय रखे

छवि
छवि

हमने पैकेज जानकारी के साथ कंपोजर.जॉन का गठन किया है

छवि

हम इसे पूरक कर सकते हैं और इस फ़ाइल के साथ प्रोजेक्ट वितरित कर सकते हैं।

छवि

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

छवि

पैकेज निर्माता के दृष्टिकोण से उदाहरण का उपयोग


उदाहरण के लिए, मैंने एक विधि के साथ एक वर्ग बनाया जो वर्तमान पृष्ठ का URL प्रदर्शित करेगा

छवि

वर्ग को एक पैकेज के रूप में डिज़ाइन किया गया है और जीथूब पर अपलोड किया गया है।

छवि
छवि

संगीतकार.जसन द्वारा संकलित

छवि

मैं कार्यालय में पंजीकरण करता हूं। रिपॉजिटरी और एक पैकेज जोड़ते हैं, जिसमें रिपॉजिटरी का एक लिंक होता है जिसमें यह निहित होता है

छवि

सभी पैकेज जोड़े गए

छवि
छवि

मैं पैकेज की कार्यक्षमता की जांच करता हूं

छवि

पैकेज दिया गया था, यहाँ हमारी कक्षा है:

छवि

विधि को बुलाओ

छवि

सब कुछ ठीक है।

छवि

संगीतकार और PhPStorm


प्रारंभ

छवि
छवि
छवि
छवि

विन्यास पैकेज संपादन क्षमताओं का विन्यास

छवि

यदि विकल्प सेट किया गया है, तो विक्रेता / * / * के अंदर फ़ाइलों को लेना और संपादित करना इतना आसान नहीं होगा

पैकेज स्थापना

छवि
छवि
छवि
छवि
छवि

बारीकियों, सूक्ष्मता, कठिन परिस्थितियों


त्रुटि: चेतावनी: कंपोजर.जॉसन में नवीनतम बदलावों के साथ लॉक फ़ाइल अद्यतित नहीं है। आपको पुरानी निर्भरताएँ प्राप्त हो सकती हैं। उन्हें अद्यतन करने के लिए अद्यतन चलाएँ। इंस्टॉल या अपडेट करने के लिए कुछ भी नहीं
समाधान: संगीतकार अद्यतन --lock

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

संगीतकार अपडेट पैकेज / नाम

आप "--prefer-dist" पैरामीटर भी जोड़ सकते हैं (हालांकि, सिद्धांत रूप में, इसे डिफ़ॉल्ट रूप से चालू किया जाना चाहिए), फिर संगीतकार रिपॉजिटरी को क्लोन करने के बजाय ज़िप आर्काइव से लाइब्रेरी को स्थापित करने का प्रयास करेगा।

"****। Json" फ़ाइल डाउनलोड नहीं की जा सकी: स्ट्रीम खोलने में विफल: HTTP अनुरोध विफल!
कंपोज़र HTTP पर पैकेट को खींचने की कोशिश कर रहा है, हालांकि इसे HTTPS से अधिक होना चाहिए
समाधान: कंपोज़र कॉन्फिग - global repo.packagist कंपोज़र packagist.org

पैकेज आपकी न्यूनतम-स्थिरता सेटिंग के अनुसार स्थिर-पर्याप्त संस्करण में उपलब्ध नहीं है
अधिक जानकारी के लिए देखें।
पैकेज में एक स्थिर संस्करण नहीं है, और इनवॉइस में देव संस्करण स्थापित करने की अनुमति नहीं है।
समाधान: या तो पैरामीटर "न्यूनतम-स्थिरता" सेट करें: "देव" और "पसंद-स्थिर": संभव के रूप में स्थिर संस्करणों को सेट करने के लिए सही है, या - यदि यह आपका अपना पैकेज है - संस्करण के साथ एक टैग बनाएं (गीथ पर रीडमी में स्थिर स्टिकर) संस्करण दिखाएं)

विकास और महत्वपूर्ण परिवर्तनों का इतिहास


- पहली रिलीज़ 1 मार्च 2012 को हुई और पूरे 2012 टूल सक्रिय रूप से विकसित हो रहा है
- जनवरी 2014 - PSR-4 के आधार पर ऑटोलोड लागू किया गया
- मार्च 2016 - बीटा संस्करण (1.0.0-beta1) जारी किया गया था। जोड़ा गया शो - ट्री में इंस्टॉल किए गए पैकेज को प्रदर्शित करने के लिए आदेश, क्यों नहीं - दिखाता है कि पैकेज को स्थापित करना क्यों असंभव है, अपडेट - इनएक्टिव - आपको यह चुनने की अनुमति देता है कि कौन से पैकेज को अपडेट करना है, साथ ही साथ कई अन्य सुधार और सुधार।
- 4 अप्रैल, 2016 - संगीतकार की पहली स्थिर रिलीज - 1.0.0 पेश की गई

दिसंबर 2014 - संगीतकार रिपॉजिटरी में से एक प्रमुख है
github.com/composer/composer/commit/ac676f47f7bbc619678a29deae097b6b0710b799
परिवर्तन का सार - कचरा कलेक्टर अक्षम

छवि
छवि

habrastorage.org/getpro/habr/comment_images/db3/59a/972/db359a972df6730e52f292b5c52095b8.gif

संदर्भ


ऑफसाइट: getcomposer.org
आधिकारिक पैकेज रिपॉजिटरी: packagist.org
संगीतकार भंडार: github.com/composer/composer
महान संगीतकार ट्यूटोरियल : daylerees.com/composer-primer
आदेशों की सूची और कंपोज़र.जॉन फ़ाइल का एक विस्तृत उदाहरण: कंपोज़र.जॉन.जॉलिकोड.कॉम

Source: https://habr.com/ru/post/hi439200/


All Articles