ملحن للصغار

يوم جيد

عندما تعاملت مع الملحن لأول مرة ، قمت برسم ورقة غش صغيرة لنفسي والآن ، بعد فترة ، أقدمها للجمهور بشكل معدّل قليلاً.
هذا المنشور مناسب لأولئك الذين ، لأول مرة ، واجهوا مدير حزمة لا غنى عنه لـ PHP.

لذلك ، الملحن هو مدير حزمة PHP.

ما هو الملحن وأبسط مثال على استخدامه؟


خذ هذا المشروع كمثال.
باختصار: هذه مجموعة من البرامج النصية للعمل في VK API
وفقا لذلك ، لتشغيل هذه البرامج النصية تحتاج إلى عدة مكتبات
يتم سرد المكتبات في ملف composer.json - وهو ملف رئيسي عند العمل مع الملحن

مثال لحن الملحن: json:

الصورة

يستخدم هذا المشروع 5 مكتبات. وفقًا لذلك ، إذا قرر أحد المطورين نشر هذا المشروع على github ، فعليه فقط إسقاط مجلد البرنامج النصي في اللفت وإنشاء comper.json ، والذي سيصف المكتبات اللازمة للعمل في هذا المشروع. البساطة واضحة: في اللفت ، لا تحتاج إلى سحب جميع المكتبات اللازمة مع المقطورة بعد الملفات. يستغرق مساحة أقل ، من السهل توزيع المشروع.

مثال العمل:

قم بتنزيل المشروع

الصورة

في مجلد البرامج النصية توجد نصوص مباشرة للمشروع ، والتي تتطلب هذه الحزم الخمس.

نبدأ تثبيت الحزم:

الصورة

بعد التثبيت ، يظهر مجلد البائع ، حيث تتم إضافة الحزم المثبتة ويتم تشكيل ملف autoload.php

الصورة

نحن نربط هذا الملف بالمشروع وهذا كل شيء - المكتبات متصلة ، يمكنك العمل بأمان معهم.

الصورة

البساطة واضحة: لا تحتاج إلى تنزيل المكتبات وتوصيلها وتوابعها بنفسك ، فالمؤلف سيقوم بكل شيء من أجلك. وهذه الحزمة بأكملها متصلة بملف autoload.php واحد
تتم إضافة كافة الحزم الموجودة في البائع إلى أداة التحميل التلقائي. في القيام بذلك ، يعتمد الملحن على ملفات composer.json ، والتي يجب أن تحتوي كل حزمة عليها. إن تكوين حزمة composer.json هي مهمة مطور الحزمة ؛ يحتاج مستهلك الحزمة فقط إلى الوصف في مشروع composer.json الذي يحتاج إلى توصيل الحزم.

هذا مثال على مشروع composer.json:

الصورة

هذا مثال على حزمة composer.json:

الصورة

في قسم المتطلبات ، يتم تسجيل تبعية هذه الحزمة - مكتبة http guzzle ، وهي ضرورية لمكتبة getjump / vk. في هذه الحالة ، أي من وجهة نظر المستهلك من الحزم ، فإن جميع أنواع تبعيات الحزمة ليست "شاغلنا" ، سوف الملحن معرفة التبعيات نفسها.

يتم تسجيل مساحة اسم الحزمة في قسم التحميل التلقائي.

الصورة

getjump \\ Vk \\ - اسم مساحة الاسم
src / getjump / Vk / - الدليل حيث توجد الملفات مع فئات الحزمة
العمل مع هذه المكتبة في المشروع:

الصورة

يُعد Core and Friends فصول مكتبة تم وضعها وتسجيلها في مجلد src وفقًا لمعايير PSR-4. مرة أخرى ، تشكيل بنية الحزمة هو مهمة منشئ الحزمة.
يكفي بالنسبة لنا ، بصفتنا مستهلك الحزمة ، التسجيل في مشروعنا
تشمل "../vendor/autoload.php" ؛
وجميع هذه الفئات ومساحات الأسماء ستعمل على ما يرام.
في هذه الحالة ، لا نحتاج إلى عناء وكتابة autoloader. سيقوم الملحن بذلك بنفسه عند تشغيل الأمر install.

التثبيت


تثبيت الملحن على الصعيد العالمي


1) تحتاج أولاً إلى المسار إلى الدليل باستخدام مترجم PHP لتسجيله في مسار متغير البيئة.
تحقق مما إذا كان هذا هو الحال:
فب-الإصدار

الصورة

إذا كان الاستنتاج مثل هذا ، فيمكنك تخطي هذه الخطوة
على سبيل المثال ، ويندوز 7
النظام -> إعدادات النظام المتقدمة -> متقدم -> متغيرات البيئة

بعد ذلك ، سنهتم بمتغير المسار:

الصورة

أدخل المسار إلى المترجم

الصورة
الصورة

* منذ العصور القديمة ، لدي مجموعة xampp على جهاز الكمبيوتر الخاص بي ، ليست هناك حاجة إلى التجميع نفسه هنا ، لكن المترجم منه مناسب تمامًا (إصدار PHP - 5.6).

2) إعادة تشغيل المحطة.
إنشاء دليل وتثبيت الملحن (أضع على القرص D)
د:
قرص مضغوط /
مقدر بن
بن مؤتمر نزع السلاح
php -r "readfile ('https://getcomposer.org/installer')؛" | فب
صدى php "٪ ~ dp0composer.phar"٪ *> composer.bat

الصورة

3) إضافة المسار إلى composer.bat إلى مسار متغير البيئة ، على سبيل المثال ل D: \ bin يجب أن تعمل:

الصورة

بالإضافة إلى ذلك يمكن أن تضاف إلى المسار
D: \ Users \٪ userName٪ \ AppData \ Roaming \ Composer \ vendor \ bin \
لجعله أكثر ملاءمة لاستخدام الأدوات المثبتة عالميا من خلال الملحن.
(لدي مجلد المستخدمون الموجود على محرك الأقراص D ، وتم إنشاء رمز ارتباط على C له).
هذا كل شيء ، تم تثبيت الملحن وجاهز للذهاب.

آخر: أثناء التثبيت ، يمكنك التقاط خطأ
[RuntimeException]
يجب تعيين متغير البيئة APPDATA أو COMPOSER_HOME لكي يعمل الملحن بشكل صحيح
تم العثور على الحل هنا github.com/composer/composer/issues/2033
أضف متغير APPDATA بالقيمة D: \ Users \ GSU \ AppData \ Roaming

الصورة

تثبيت الملحن محليا


هناك خيار لتثبيت الملحن محليًا ، ولكن في معظم الحالات لا توجد حاجة واضحة لذلك.
ومع ذلك ، التثبيت أبسط هنا.
بسبب لم يتم تثبيت البرنامج على مستوى العالم ، فأنت بحاجة إلى ملف تمهيد (برنامج صغير للملحن) ، لتحميله نكتب الأمر:
php -r "readfile ('https://getcomposer.org/installer')؛" | فب
الآن يظهر الملف composer.phar في دليل المشروع
كل شيء يمكن استخدامه.
php composer.phar تتطلب [اسم الحزمة]

الاختلافات بين التثبيت العالمي والمحلي


تعمل الأوامر بشكل مختلف للتثبيتات المحلية والعالمية:

على سبيل المثال:
محليا: php composer.phar تتطلب silex / silex ~ 1.1
على الصعيد العالمي: الملحن يتطلب silex / silex ~ 1.1

عند التثبيت محليًا ، يجب تنزيل ملف التثبيت إلى مجلد المشروع الحالي في كل مرة
php -r "readfile ('https://getcomposer.org/installer')؛" | فب

في التثبيت العمومي ، هذا الملف غير مطلوب. يبدأ الملحن في أي دليل حالي.

فرق


تثبيت - تثبيت الحزم المنصوص عليها في composer.json
حزم التحديث - التحديث
dumpautoload - إعادة بناء autoloader
تتطلب somepackage / somepackage: someversion - إضافة حزمة جديدة (افتراضياً ، يتم تثبيت الحزم من المستودع الرسمي). أثناء التثبيت ، تتم كتابة الحزمة في composer.json
تحديث - قفل - تحديث ملف قفل composer.lock
config --global cache-files-maxsize "2048MiB" - مثال على تغيير معلمة التكوين
- ملف التعريف - إضافة هذه المعلمة إلى أي أمر سيمكن من عرض وقت التنفيذ ومقدار الذاكرة المستخدمة
- أفرط - معلومات مفصلة حول العملية التي يجري تنفيذها
تظهر - مثبتة - قائمة الحزم المثبتة مع وصف لكل منها
عرض - منصة - PHP المعلومات
- المدى الجاف - بروفة تنفيذ الأوامر. يمكن إضافته لتثبيت وتحديث الأوامر. يحاكي تنفيذ أمر ما دون تنفيذه مباشرة. من الضروري التحقق من نجاح تثبيت الحزم والتبعيات.
إزالة - إزالة الحزمة. العكس تماما من تتطلب

بناء الجملة composer.json


تسمية الحزمة وخيارات وصف الحزمة

يتكون اسم الحزمة من جزأين مفصولين بشرطة مائلة: اسم البائع واسم المكتبة.

الصورة

إذا كانت الحزمة مصممة وفقًا لمعيار PSR-4 ، ولكن لم يتم نشرها على packagist.org ، ولكن على github ، فبدلاً من إصدار الحزمة ، تحتاج إلى تسجيل فرع ومستودع لهذه الحزمة:

الصورة

مثال على توصيل مكتبة موجودة على github ، ولكنها غير مؤطرة وفقًا لمعيار PSR-4 ، ولكنها كومة عادية من الملفات مع فئات ووظائف.

عرض عينة:

الصورة

Pqr / superlib - هذا هو نفس مكتبة "خاطئة".

في قسم المستودعات ، نكتب مثل هذا البناء لذلك

الصورة

النقطة الأساسية هي قسم التحميل التلقائي ، وهنا نحدد الملفات التي نحتاجها مع الفئات والوظائف.
هيكل المكتبة:

الصورة

محتويات الملف:

الصورة
الصورة

وفقًا لذلك ، في المشروع ، ستبدو الدعوة إلى getCurrentTime () كالتالي:
$ timer = new pqr \ superlib \ TimerClass؛
صدى $ timer-> getCurrentTime () ؛

الإصدار


عند تحديد إصدارات حزم صالحة ، يمكنك استخدام المراسلات الدقيقة (1.2.3) ، النطاقات مع عوامل المقارنة (<1.2.3) ، مجموعات من هذه العوامل (> 1.2.3 <1.3) ، "آخر متاح" (1.2. *) ، رمز Tilde (~ 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 لم يعد موجودًا.
أي فقط الرقم الأول لا يتغير.

تيلدا: ~ 1.2.3 هي الطريقة الأكثر شيوعا وآمنة لتحديد إصدار.

ملف الملحن


يحفظ ملف composer.lock القائمة الحالية للتبعيات المثبتة وإصداراتها. وبالتالي ، في الوقت الذي يتم فيه بالفعل تحديث إصدارات التبعية (أمر التحديث) ، سيحصل الأشخاص الآخرون الذين سيقومون باستنساخ مشروعك على نفس الإصدارات. يتيح لك ذلك التأكد من أن كل شخص يتلقى مشروعك لديه بيئة دفعية مماثلة لتلك التي استخدمتها أثناء التطوير ، ويساعد على تجنب الأخطاء التي قد تنشأ بسبب ترقيات الإصدار.

في كل مرة يتم تنفيذ أمر التحديث ، يتم تسجيل إصدارات الحزم المحدثة في composer.lock. يتم ضغط هذا الملف ضمن نظام التحكم في الإصدار ، وعند تثبيت الحزم على الخادم الجديد ، سيتم تسليم تلك الإصدارات من الحزم المسجلة في هذا الملف. عند تنفيذ أمر install ، سيعتمد الملحن بشكل أساسي على composer.lock. وبالتالي ، سيتم ضمان بيئة الحزمة نفسها من حيث الإصدارات ليتم تثبيتها على خوادم مختلفة.

أيضًا ، يحتوي ملف composer.lock على تجزئة لملف composer.json.
وإذا تم تحرير ملف json ، فسوف يحذرك الملحن بأن ملف القفل لا يتطابق مع ملف json.

في هذه الحالة ، تحتاج إلى تشغيل الأمر - locker update composer ، والذي سيؤدي إلى تحديث composer.lock.

الصورة
الصورة
الصورة
الصورة

الفرق بين التثبيت والتحديث في سياق استخدام composer.lock


يقوم أمر تثبيت الملحن بما يلي:

يتحقق من وجود composer.lock:

- إذا لم يكن كذلك ، يحل التبعيات ويخلقها
- في حالة وجود composer.lock ، يقوم بتثبيت الإصدارات المحددة فيه

أمر تحديث الملحن :

- الشيكات composer.json
- يحدد أحدث الإصدارات بناءً على تلك المحددة في هذا الملف
- تثبيت أحدث الإصدارات
- تحديثات composer.lock وفقا للتثبيت

مثال للاستخدام من وجهة نظر منشئ المشروع


هناك مشروع بدون حزم مثبتة

الصورة

ضع بعض المكتبات

الصورة
الصورة

لقد شكلنا composer.json مع معلومات الحزمة

الصورة

يمكننا استكماله وتوزيع المشروع بهذا الملف.

الصورة

قام مستخدم آخر بتنزيل مشروعنا وتثبيت التثبيت ، وتم نشر جميع الحزم اللازمة في مشروعه.

الصورة

مثال للاستخدام من منظور منشئ الحزمة


على سبيل المثال ، قمت بإنشاء فصل دراسي باستخدام طريقة تعرض عنوان URL للصفحة الحالية

الصورة

تم تصميم الفصل كحزمة وتحميله على جيثب.

الصورة
الصورة

جمعتها composer.json

الصورة

أنا أسجل في المكتب. المستودعات وإضافة حزمة ، مما يشير إلى وجود رابط إلى المستودع الذي يقع فيه

الصورة

كل حزمة المضافة

الصورة
الصورة

أتحقق من وظائف الحزمة

الصورة

تم تسليم الحزمة ، وهنا هو صفنا:

الصورة

استدعاء الأسلوب

الصورة

كل شيء على ما يرام.

الصورة

الملحن و PhpStorm


التهيئة

الصورة
الصورة
الصورة
الصورة

تكوين قدرات تحرير حزمة الملحن

الصورة

إذا تم ضبط الخيار ، فلن يكون من السهل أخذ الملفات وتحريرها داخل المورد / * / *

حزمة التثبيت

الصورة
الصورة
الصورة
الصورة
الصورة

الفروق الدقيقة ، الدقيقة ، المواقف الصعبة


خطأ: تحذير: ملف القفل غير محدث بأحدث التغييرات في composer.json. قد تكون الحصول على التبعيات التي عفا عليها الزمن. تشغيل التحديث لتحديثها. لا شيء لتثبيت أو تحديث
الحل: تحديث الملحن - القفل

يستغرق التحديث وقتًا طويلاً مع تثبيت عدد كبير من المكتبات
يتحقق الملحن من جميع تبعيات الحزم ، وإذا كان هناك العديد من الحزم ، فسيكون هذا وقتًا طويلاً.
الحل: إذا كنت بحاجة إلى تحديث مكتبة واحدة فقط ، فحددها بوضوح:

حزمة تحديث الملحن / الاسم

يمكنك أيضًا إضافة المعلمة "- تفضيل dist" (على الرغم من أنه من الناحية النظرية ، يجب تشغيلها افتراضيًا) ، سيحاول الملحن تثبيت المكتبة من أرشيف zip ، بدلاً من استنساخ المخزون.

تعذر تنزيل ملف "****. Json": فشل في فتح البث: فشل طلب HTTP!
يحاول الملحن سحب الحزمة عبر HTTP ، على الرغم من أنه يحتاج إلى تجاوز HTTPS
الحل: الملحن التكوين - العالمية repo.packagist الملحن packagist.org

الحزمة غير متوفرة في إصدار ثابت بما يكفي وفقًا لإعداد الحد الأدنى من الاستقرار
انظر لمزيد من التفاصيل.
لا تحتوي الحزمة على إصدار ثابت ، ولا يُسمح بتثبيت إصدار dev في التكوين.
الحل: إما تعيين المعلمة "الدنيا الاستقرار": "ديف" و "تفضيل الاستقرار": صحيح لوضع إصدارات مستقرة قدر الإمكان ، أو - إذا كانت هذه هي الحزمة الخاصة بك - إنشاء علامة مع الإصدار (يجب أن يكون الملصق المستقر في الملف التمهيدي على github عرض الإصدار)

تاريخ التنمية والتغيرات الرئيسية


- تم إطلاق الإصدار الأول في 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
قائمة الأوامر ومثال تفصيلي لملف composer.json : composer.json.jolicode.com

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


All Articles