کامپوزر چیست؟! چرا باید از کامپوزر استفاده کنیم؟

سلام امیدوارم حالتون خوب باشه، و سرشار از انرژی مثبت باشید.

* بحث مدیریت وابستگی پروژه به پکیج‎ها و کتابخانه ‎ها خیلی بحث حیاتی و مهمی هستش و اگر ما از یک Package manager استفاده نکنیم ممکنه به دردسر بیوفتیم.


کامپوزر (Composer) چیست؟!

در کوتاه ترین تعریف، کامپوزر یک ابزار برای مدیریت وابستگی ها در PHP هست.

شما کتابخانه هایی که برای پروژتون نیاز دارید رو وارد میکنید کامپوزر با تمام وابستگی هایی که دارند براتون نصب و مدیریتشون میکنه. ( این مقاله هدفش بیشتر صبحت در رابطه با بخش های فنی Composer هست و راجب فرایند نصب کامپوزر روی سیستم کامپیوتریتون صحبت نخواهیم کرد.)


Composer init

شاید اولین دستوری باشد که در کامپوزر یاد میگیریم، این دستور کامپوزر را برای پروژه ما initialize میکنه، در حقیقت با این کامند شما کامپوزر رو برای پروژتون استارت میزنید.
یک سری سوال ازتون میپرسه و طبق جواب هایی که بهش میدید براتون یک فایل کانفیگ میسازه به اسم composer.json که تمام کانفیگ نرم افزارتون داخلش قرار داره.

یک سری از سوالات کامپوزر رو اینجا براتون نوشتم:

Package name (<vendor>/<name>) [masoudharooni/first-package]:

اسم پکیج یا پروژتون رو میپرسه که یک اسم هم بهتون پیشنهاد میده که اگر Enter بزنید همون اسم پیشنهادی رو قرار میده. که اینجا : masoudharooni/first-package هست.

** در تمام مراحل اگر Enter بزنید و چیزی وارد نکنید، یا مقداری که بهتون پیشنهاد داده رو قرار میده یا خالی قرار میده اون بخش رو **

Description []: 

توضیحی راجب پروژه رو ازتون میخواد.

Author [masoud harooni <masoudharooni50@gmail.com>, n to skip]: 

نویسنده پکیج رو ازتون میخواد، که میتوانید نام نویسندگان را با کاما ( , ) جدا کنید.

Minimum Stability []: 

شما اینجا میتونید یک رفتار پیشفرض (default behavior) تعریف کنید برای فیلتر کردن پکیج ها بر اساس پایداریشون (Stability ) که به صورت پیشفرض stable هست.

Package Type (e.g. library, project, metapackage, composer-plugin) []: project 
License []: 

دیگه فکر نمیکنم نیازی به توضیح داشته باشه.


این کانفیگی هست که باهم ست کردیم:

composer.json
composer.json


بریم سراغ کامندهایی که کامپوزر در اختیارمون قرار میده

Composer install

کامپوزر به دنبال فایل comopser.lock میگردد اگر آن را پیدا کند، دقیقا همان پکیج هایی را که مشخص شده با همان ورژن ها نصب میکند، در غیر این صورت فایل composer.json رو میخواند و پکیج هایی که داخل بخش require مشخص شده رو نصب میکنه، و ورژن پکیج های نصب شده را داخل فایل composer.lock قرار میده.

Composer update

با استفاده از این کامند کامپوزر فایل کانفیگ (composer.json) رو میخونه، اگر پکیجی در بخش require وجود داشته باشه که نصب نشده باشه اون رو نصب میکنه، یا اگر پکیجی نصب شده باشه که داخل require وجود نداشته باشه اون رو حذف میکنه و بقیه پکیج هارو هم اگر آخرین ورژنشون در دسترس باشه اونهارو نصب میکنه، و نهایتا اطلاعات جدید پکیج هارو در فایل composer.lock قرار میده.

Composer require

با استفاده از این کامند شما میتوانید یک پکیج را به بخش require ها در فایل کانفیگ اضافه کنید.

Composer remove

با استفاده از این کامند نیز شما میتوانید پکیج مورد نظر خود را از بخش require های فایل کانفیگ حذف کنید، اگر هم نیاز داشته باشید تمام وابستگی های پکیج مورد نظرتون رو حذف کنید میتونید از دستور زیر استفاده کنید.

composer remove vendor/packagename --update-with-dependencies

Composer outdated --direct

تمام پکیج هایی که منسوخ شده اند و توسط root package هاتون مورد استفاده اند رو نمایش میده.


Composer dumpautoload

مجددا فایل composer.json رو میخونه و یک لیست از تمام کلاس هایی که قراره include شوند در پروژه جمع آوری میکند (در فایل : autoload_classmap.php)

مشخص کردن ورژن های خاص از پکیج ها

شما برای مشخص کردن یک ورژن خاص از یک پکیج باید از Passing version ها استفاده کنید که بخشی از آنها را در تصویر زیر براتون قرار دادم.

Passing versions in composer
Passing versions in composer


تشکر از اینکه وقت گذاشتید و تا اینجا مطالعه کردید، نظرتون رو برام حتما کامنت کنید و اگر دوست داشتید مقاله رو لایک کنید و اون رو به دوستاتون معرفی کنید.
- برای عمیق تر شدن در مطالب این مقاله رو هم مطالعه کنید.

ارادتمند شما مسعود هارونی