اكاديمية ورشة لونك

تعليم php : ما هو Composer و لماذا يجب علي كل مبرمج PHP استخدامه

تخيل معي الآتي : أنت مطور PHP ، تمتلك مشروع و تريد تطويره ، يمكن ان تختار اطار عمل معين لهذه المهمة ، و لكنك سوف تحتاج إلي بضعه مكتبات إضافية للقيام بهذا ، تخيلك بإنك تريد أن يقوم التطبيق الخاص بك بنشر تحديثات ما علي حساب المستخدم في شبكة تويتر ، وجدت المكتبة التي تريد القيام بإستخدامها و لكنها مكتبة تقوم بالاعتماد علي مكتبة اخري .

YourColor.Net

مطور بي اتش بي من العصر الحجري سوف يقوم بهذا : سوف يقوم بتحميل نُسخة من إطار العمل ، و بعدها يقوم بإنشاء فولدر يقوم بوضع فيه المكتبات الاضافية التي يريدها و بعدها يحاول فهم ألية عملها ليقوم بربطها ببعضها ، قد تؤتي هذه الطريقة أكلها ، و يمكن ان تسمح لك بتطوير المشروع الخاص بك “دون اي مشاكل” ، و لكن ماذا يحدث إذا تم إطلاق تحديث لأي من المكتبات التي تقوم بالاعتماد عليها ؟ هل سوف تقوم بإعادة تحميلها مرة أخري و القيام بإستبدال الاصدار القديم بالاصدار الجديد ؟ هل بإمكانك فعل هذا لو كنت تقوم بإستخدام اكثر من مكتبة تقوم بالاعتماد علي بعضها البعض ؟ لست متأكد من هذا . لكن ما هو البديل ؟ إن سبق لك إن قمت بإستخدام لغات برمجة أخري مثل الجافا سكربت مع node.js أو روبي فإنه سبق لك ان قمت بالتعامل مع ما يطلق عليه اسم مدير الحزم Package manager ، حيث يتم القيام بإستخدام npm مع node مثلا للقيام بتثبيت حزم و اضافات لـ node . يمكننا ان نقول إن موضع composer من بي اتش بي هو موضع npm من node.js ، حيث إن composer يقوزم بإتاحة تحميل المكتبات التي تريدها في المشروع الخاص بك و القيام بالابقاء عليها محدثة دون الحاجة إلي القيام بتحميلها و القيام بنقلها بشكل يدوي . رغم كل هذا فإن موقع composer الرسمي يٌشير أن نقوم بالإطلاق عليه اسم مدير حزم و هذا بحكم إنه لا يقوم بتنصيب هذه الحزم بشكل عام علي النظام Global بل تتم إدارة الحزم داخل كل مشروع بشكل محلي ، و لهذا يتم الاطلاق عليه وصف مدير الاعتمادات Dependency Manager .

تثبيت Composer

اتركونا من الجانب النظري و لنقوم بتنصيب composer و لنقوم بإلقاء نظرة علي طريقة القيام بإستخدامه . بالرغم من إ،ه يمكن القيام بتنصيبه بشكل محلي بداخل كل مشروع إلا إنه يفضل القيام بتنصيبه بشكل عام علي النظام ، علي انظمة Linux/Unix يكفي القيام بتنفيذ الامرين التاليين للقيام بتنصيب composer :

[code]$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer[/code]

يمكن ان تحتاج إلي إضافة sudo قبل الامر الثاني إن احتجت لصلاحيات مدير النظام للقيام بتنفيذ الامر .

و لكن علي انظمة ويندوز فيكفي ان تقوم بتحميل و تنصيب التطبيق الرسمي الخاص به .

بإمكانك التحقق من إذا تم تنصيب composer بشكل صحيح علي النظام بالقيام بتنفيذ امر composer في سطر الاوامر و الذي من شأنه أن يقوم بإظهار المساعدة الخاصة به .

استخدام Composer

الأن و بعد إن قمنا بتثبيت composer سوف نحتاج إلي القيام بإنشاء ملف composer.json نقوم بواسطته بإعلام composer بالحزم التي نريد القيام بإرفاقها و الاعتماد عليها في المشروع الجديد الخاص بك و ايضا يمكن لهذا الملف ان يحتوي علي بيانات اخري سوف نحتاجها في بناء المشروع .

يكون ملف composer.json في شكله الابسط علي هذا النحو :

[code]{
"require": {
"monolog/monolog": "1.0.*"
}
}[/code]

في هذا المثال نقوم بالاعتماد علي النسخة 1.0.* من مكتبة monolog . بطبيعة الحال يمكن القيام بالاعتماد علي اكثر من مكتبة في المشروع الخاص بنا الحالي ، حيث يكفي القيام بإضافة سطر جديد لكل مكتبة ما بين حاضنتي require و يتكون كل سطر من اسم المكتبة (الذي عاد ما يحتوي علي اسم الجهة المنتجة لها متبوعة باسمها ، و عاده ما يكون نفس الاسم مكرر مرتين) إضافة إلي رقم الاصادر الذي نريده .

يُمكن القيام بإيجاد هذه المكتبات و اليات اضافتها إلي المشروع الخاص بك بالبحث علي موقع https://packagist.org/ .

الأن و بعد ان قمنا بتحديد المكتبات التي نريدها يكفي ان نقوم بتنفيذ الامر

[code]composer install[/code]

أو

[code]php composer.phar install[/code]

في حالة إذا لم تقم بنقل composer.phar إلي فولدر مساره موجود في متغير PATH الخاص بالنظام . سوف يقوم composer بالقيام بتحميل كل هذه المكتبات و القيام بوضعها داخل فولدر vendor الذي سوف يتم القيام بإنشائه في داخل فولدر المشروع الحالي .

Autoloading

و للقيام بتجنيب المطور من اللجوء إلي القيام بإستدعاء هذه المكتبات واحده واحده لدي كتابته للمشروع الخاص به ، يقوم composer بالقيام بإنشاء ملف vendors/autoloader.php الذي يقوم بتولي إدارة هذا حيث يكفي القيام بإستدعاء هذا الملف لتتمكن من القيام بإستخدام المكتبات الي قمت بتحميلها من دون الحاجة إلي القيام بهذا يدوياً :

[code]<?php
require_once "vendors/autoloader.php";[/code]

تحديث المكتبات

لدي صدور تحديث جديد للمكتبة التي تقوم بالاعتماد عليها فإنه يكفي القيام بتنفيذ الامر للقيام بالحصول عليها :

[code]composer update[/code]

بطبيعة الحال إن كنت قد قمت بتحديصد ادار معين في ملف composer.json فإنك لن تقوم بالحصول علي النسخ الاحدث ما لم تقم بالقيام بتحديد الاصدار بشكل يسمح بالترقية الالية . بعبارة أخري إذا كنت تقوم بإستعمال مثل اطار عمل Laravel و قمت بإضافته بالقيام بإستخدام السطر التالي laravel/framework”: “4.1.* فإنه سوف يتم التحديث إلي اصدار في التفرع 4.1 و لن يتم المرور إلي النسخ 4.2 أو التي تليها .

Packagist

إن Packagist عبارة عن موقع يتم القيام بتجميه فيه مكتبات PHP مفتوحة المصدر المتوفر للقيام بالإستعمال من طرف الكل بإستخدام composer . حسب التوثيق الرسمي لـ composer فإنه لا يشترط في المكتبة أن تكون علي Packagist ليتم القيام بإستدعاؤها من طرف Composer إلا إنه يفضل إن اردت القيام بتوفير المكتبة الخاصة بك للكل أن تقوم بتسجيلها علي هذا الموقع .

خلاصة

إذا كنت مطور بي اتش بي و تريد أن تقوم بتطوير نفسك مع تطور هذه اللغة و أن تبقي حبيس النسخ القديمة منها (الإصدار 4 ؟) فإنه يجب عليك أن تقوم بتتبع اسلوب مختلف غي التطوير عن اسلوب مطور بي اتش بي من العصر الحجري . من بين أولي الخطوات التي ستخطوها للقيام بالوصول إلي هذا هو الاستعانة بـ composer في كل المشاريع الخاص بك التي تقوم بالعمل عليها حيث يُعتبر الغراء الذي يلصق مكونات المشروع الخاص بك ببعضها و يسهل عليك مهمة التطوير .

لمعرفة المزيد عن composer و عن مختلف المكتبات التي بإمكانك القيام بالاستعانه بها في مشروعك زور الموقع الخاص به الرسمي و موقع Packagist .

مهاب البوشي

مهاب البوشي

مهاب البوشي ، مؤسس شركة ترويج 'Trweeg.Com' و مسئول السيو و التسويق في ورشة لونك و مدير اكاديمية ورشة لونك التعليمية .

اضف تعليق

Your Header Sidebar area is currently empty. Hurry up and add some widgets.