ما هو Composer ولماذا تحتاجه؟
\n\nComposer هو مدير التبعيات للغة البرمجة PHP. إذا كنت قد عملت مع npm لجافا سكريبت أو pip لباثون، فستكون مبادئ عمل Composer مألوفة لك. يتيح لك تعريف المكتبات التي يعتمد عليها مشروعك، وإدارة تثبيتها وتحديثها وإزالتها تلقائياً.
لماذا تحتاج Composer؟ في تطوير PHP الحديث، نادراً ما يُكتب كل شيء من الصفر. عادةً ما تُستخدم المكتبات الجاهزة: للعمل مع قواعد البيانات (Doctrine، Eloquent)، طلبات HTTP (Guzzle)، محركات القوالب (Twig)، التسجيل (Monolog)، إلخ. في السابق، كان المطورون يقومون بتنزيل أرشيفات ZIP، ونسخ الملفات يدوياً، وتضمينها عبر require. كان هذا غير مريح، ويصعب الحفاظ على الإصدارات وتحديث التبعيات. Composer يحل كل هذه المشاكل:
- \n
- التحميل التلقائي (autoloading): يقوم Composer بإنشاء ملف تحميل تلقائي يقوم بتضمين جميع الفئات المطلوبة بنفسه. لست بحاجة لكتابة عشرات من
require_once. \n - إدارة الإصدارات: تحدد إصدارات دقيقة للمكتبات (أو نطاقات)، ويتأكد Composer من عدم تعارضها مع بعضها البعض. \n
- مستودع مركزي: جميع المكتبات مخزنة على Packagist.org — المستودع الرسمي لـ Composer. \n
- قابلية إعادة الإنتاج: ملف
composer.lockيثبت الإصدارات الدقيقة لجميع الحزم المثبتة، مما يضمن بيئة متطابقة على جميع الأجهزة (التطوير، الاختبار، الإنتاج). \n
تثبيت Composer
\n\nالتثبيت على Linux / macOS
\nأسهل طريقة هي استخدام سكريبت التثبيت الرسمي. افتح الطرفية ونفذ:
\nphp -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"\nphp -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"\nphp composer-setup.php\nphp -r "unlink('composer-setup.php');"\nبعد ذلك، ستحصل على ملف composer.phar. لجعل الأمر composer عاماً، قم بنقله:
sudo mv composer.phar /usr/local/bin/composer\n\nالتثبيت على Windows
\nقم بتنزيل وتشغيل المثبت من الموقع الرسمي. سيقوم هو بإضافة Composer إلى متغير PATH النظامي.
\n\nالتحقق من التثبيت
\nبعد التثبيت، نفذ في الطرفية:
\ncomposer --version\nيجب أن ترى شيئاً مثل: Composer version 2.7.1 2024-03-11 16:15:07.
بداية سريعة مع مثال كود
\n\nلننشئ مشروعاً جديداً ونثبت مكتبة للعمل مع التواريخ — nesbot/carbon.
- \n
- أنشئ دليل المشروع:\n
\nmkdir my_project\ncd my_project\n - قم بتهيئة Composer:\n
\ncomposer initسيُطلب منك إدخال اسم المشروع، الوصف، المؤلف، إلخ. يمكنك الضغط على Enter للموافقة على القيم الافتراضية. في النهاية، سيتم إنشاء ملف
\ncomposer.json. \n - قم بتثبيت مكتبة Carbon:\n
\ncomposer require nesbot/carbonسيقوم Composer بتنزيل المكتبة وجميع تبعياتها في مجلد
\nvendor/، بالإضافة إلى إنشاء ملفcomposer.lockوتحديثcomposer.json. \n - أنشئ ملف
index.php:\n<?php\nrequire_once __DIR__ . '/vendor/autoload.php';\n\nuse Carbon\\Carbon;\n\necho