كيفية استخدام Composer لإدارة مكتبات PHP وبناء مشاريع احترافية

التكنولوجيا و الانترنيت

في بيئة تطوير الويب باستخدام PHP، أصبح من المستحيل تقريباً بناء تطبيق حديث دون الاستعانة بمكتبات خارجية. لكن تثبيت هذه المكتبات يدوياً والتأكد من التوافق بينها كان عملية صعبة ومتعبة. لحسن الحظ، ظهر Composer كحل مثالي لهذه المشكلة.

Composer هو أداة لإدارة تبعيات (Dependencies) المشاريع المكتوبة بـ PHP. بمعنى آخر، هو المسؤول عن تحميل وتحديث وإدارة المكتبات التي يعتمد عليها مشروعك. بالإضافة إلى ذلك، يسهل Composer تثبيت أطر عمل مثل Laravel وSymfony وDrupal، وتنظيم كود المشروع بطريقة نظيفة وقابلة للتوسعة.

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

أولاً: تثبيت Composer

1. تثبيته على Linux أو macOS

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

بعد التثبيت، تحقق أنه يعمل:

composer --version

2. تثبيته على Windows

قم بتحميل مثبت Composer من الموقع الرسمي: https://getcomposer.org واتبع الخطوات البسيطة في برنامج التثبيت.

ثانياً: إنشاء مشروع جديد باستخدام Composer

1. باستخدام مكتبة موجودة مسبقاً

composer create-project laravel/laravel myapp

هذا ينشئ مشروع Laravel في مجلد باسم "myapp".

2. إنشاء مشروع يدوي باستخدام composer init

composer init

يطلب منك إدخال اسم المشروع، الوصف، الترخيص، وغيرها.

ثالثاً: إدارة الحزم (المكتبات)

1. تثبيت مكتبة

composer require monolog/monolog

يتم إضافة المكتبة تلقائياً إلى ملف composer.json.

2. تثبيت مكتبة بإصدار معين

composer require guzzlehttp/guzzle:^7.0

3. إزالة مكتبة

composer remove monolog/monolog

4. تحديث الحزم

composer update

5. تثبيت الحزم من ملف composer.lock

composer install

رابعاً: ملف composer.json

هذا الملف يحتوي على تفاصيل المشروع والمكتبات المطلوبة. مثال:

{
  "name": "myname/myproject",
  "description": "مشروع PHP تجريبي",
  "require": {
    "monolog/monolog": "^2.0"
  }
}

خامساً: أوامر Composer المتقدمة

  • composer dump-autoload: تحديث التحميل التلقائي للملفات.
  • composer show: عرض الحزم المثبتة.
  • composer outdated: عرض الحزم التي تتطلب تحديث.
  • composer validate: التحقق من صحة ملف composer.json.
  • composer config: إعداد خيارات Composer.

سادساً: استخدام Composer مع Drupal

لتثبيت مشروع Drupal رسمي:

composer create-project drupal/recommended-project my_drupal_site

لإضافة وحدة مثل Pathauto:

composer require drupal/pathauto

مجموعة من أهم أوامر Composer

1. بدء المشروع

  • composer init - بدء مشروع جديد.
  • composer create-project drupal/recommended-project اسم_المشروع - إنشاء مشروع دروبال.
  • composer create-project --prefer-dist laravel/laravel اسم_المشروع - إنشاء مشروع لارافيل.
  • composer create-project --stability=dev vendor/project - تثبيت إصدار غير مستقر.
  • composer install - تثبيت جميع التبعيات.

2. إدارة الحزم

  • composer require drupal/module_name - إضافة وحدة دروبال.
  • composer require drush/drush - تثبيت Drush.
  • composer require --dev phpunit/phpunit - إضافة حزم للتطوير فقط.
  • composer remove drupal/module_name - إزالة حزمة.
  • composer require vendor/package:1.2.3 - تثبيت إصدار محدد.
  • composer require vendor/package:^1.2 - تثبيت الإصدار 1.2 أو أحدث.
  • composer require vendor/package:~1.2.3 - تثبيت التحديثات الصغيرة فقط.
  • composer require vendor/package:dev-master - تثبيت الإصدار المطور.
  • composer require vendor/package --no-update - الإضافة دون تحديث التبعيات.
  • composer require vendor/package --ignore-platform-reqs - تجاهل متطلبات النظام.

3. التحديثات

  • composer update - تحديث جميع الحزم.
  • composer update vendor/package - تحديث حزمة محددة.
  • composer update --with-dependencies - تحديث مع التبعيات.
  • composer update --dry-run - محاكاة التحديث دون تطبيقه.
  • composer update --no-dev - تحديث بدون حزم التطوير.
  • composer update --lock - تحديث ملف القفل فقط.
  • composer update --prefer-lowest - تثبيت أقدم إصدار متوافق.
  • composer update --prefer-stable - تفضيل الإصدارات المستقرة.
  • composer update --interactive - تحديث تفاعلي.
  • composer outdated - عرض الحزم القديمة.

4. معلومات المشروع

  • composer show - عرض جميع الحزم المثبتة.
  • composer show vendor/package - عرض تفاصيل حزمة.
  • composer show --tree - عرض شجرة التبعيات.
  • composer show --latest - عرض أحدث الإصدارات المتاحة.
  • composer show --platform - عرض حزم النظام.
  • composer show --available - عرض الحزم المتاحة.
  • composer info - عرض معلومات المشروع.
  • composer licenses - عرض التراخيص.
  • composer status - التحقق من التغييرات المحلية.
  • composer depends vendor/package - عرض الحزم المعتمدة على هذه الحزمة.

5. البحث

  • composer search keyword - البحث عن حزم.
  • composer search keyword --only-name - البحث بأسماء الحزم فقط.
  • composer browse vendor/package - فتح صفحة الحزمة في المتصفح.

6. التكوين

  • composer config --list - عرض جميع إعدادات التكوين.
  • composer config repositories.foo vcs https://github.com/foo/bar - إضافة مستودع مخصص.
  • composer config minimum-stability dev - تغيير الحد الأدنى للاستقرار.
  • composer config prefer-stable true - تفضيل الإصدارات المستقرة.
  • composer config --unset repositories.foo - إزالة إعداد.
  • composer config --global github-oauth.github.com token - إعداد token للجيثب.
  • composer config --editor - فتح ملف التكوين في المحرر.
  • composer config platform.php 7.4 - تعيين إصدار PHP افتراضي.
  • composer config --auth http-basic.example.com username password - إعداد بيانات الاعتماد.

7. السكريبتات

  • composer run-script test - تشغيل سكريبت مخصص.
  • composer run-script post-install-cmd - تشغيل سكريبت بعد التثبيت.
  • composer exec phpunit - تنفيذ أمر من الحزم المثبتة.
  • composer global exec drush status - تنفيذ أمر من الحزم العامة.
  • composer scripts - عرض السكريبتات المتاحة.

8. إدارة الذاكرة المؤقتة

  • composer clear-cache - مسح الذاكرة المؤقتة.
  • composer clearcache - اسم بديل لنفس الأمر.
  • composer dump-autoload - إعادة إنشاء ملف التحميل التلقائي.
  • composer dump-autoload --optimize - تحسين ملف التحميل التلقائي.
  • composer dump-autoload --classmap-authoritative - استخدام classmap فقط.

9. الأمان

  • composer audit - فحص الثغرات الأمنية.
  • composer security-check - فحص الأمان (يتطلب حزمة خارجية).
  • composer validate - التحقق من صحة composer.json.
  • composer diagnose - تشخيص المشاكل.
  • composer prohibits vendor/package:version - التحقق من تعارض الإصدارات.

10. الحزم العامة

  • composer global require friendsofphp/php-cs-fixer - تثبيت حزمة عامة.
  • composer global update - تحديث الحزم العامة.
  • composer global remove vendor/package - إزالة حزمة عامة.
  • composer global status - حالة الحزم العامة.
  • composer global config --list - عرض تكوين الحزم العامة.

11. دروبال

  • composer require drupal/core-recommended - تثبيت حزمة دروبال الأساسية.
  • composer require drupal/core-dev --dev - أدوات تطوير دروبال.
  • composer drupal-scaffold - إنشاء ملفات دروبال الأساسية.
  • composer drupal:update - تحديث دروبال (سكريبت مخصص).
  • composer require drupal/devel - تثبيت وحدة التطوير.
  • composer require drupal/admin_toolbar - تثبيت شريط الأدوات.
  • composer require drupal/pathauto - تثبيت Pathauto.
  • composer require drupal/ctools - تثبيت CTools.
  • composer require drupal/views - تثبيت Views.
  • composer require drupal/token - تثبيت Token.

12. متقدم

  • composer archive --format=zip - إنشاء أرشيف للمشروع.
  • composer why vendor/package - لماذا هذه الحزمة مثبتة؟
  • composer why-not vendor/package:version - لماذا لا يمكن تثبيت هذا الإصدار؟
  • composer depends --tree vendor/package - شجرة التبعيات لحزمة.
  • composer prohibits --tree vendor/package:version - شجرة التعارضات.
  • composer fund - عرض الحزم التي تطلب تمويلاً.
  • composer completion - إعداد الإكمال التلقائي للأوامر.
  • composer self-update - تحديث Composer نفسه.
  • composer self-update --rollback - الرجوع لإصدار سابق.
  • composer help command - عرض مساعدة لأمر محدد.

خاتمة

Composer هو العمود الفقري لأي مشروع PHP حديث. باستخدامه، تستطيع إدارة مكتباتك بكفاءة، بناء مشاريع نظيفة وقابلة للتوسعة، وتحديثها بأمان. ابدأ باستخدام Composer في كل مشروع جديد وستلاحظ الفرق الكبير في الإنتاجية والتنظيم.