Composer یک Dependency Manager یا مدیریت کننده وابستگی هاست که چند وقتی است توسط برنامه نویسان PHP طرفداران بسیاری پیدا کرده است.

اختراع چرخ

چرا از Composer استفاده می‌کنیم

از آن جا که هیچ کس چرخ را از اول اختراع نمی‌کند پس باید از Composer استفاده کرد!

اگر پروژه هایتان در PHP چند خطی و ساده هستند نیازی به Composer ندارید ولی اگر پروژه هایتان پیچیده شود و نیازمند کتابخانه‌های متعدد و حرفه‌ای زیادی است Composer وظیفه مدیریت کتابخانه‌ها و بروز رسانی آن‌ها را بر عهده می‌گیرد.

با این کار شما همیشه مطمین هستید پروژه شما با بروز ترین کتابخانه‌ها در حال کار است.

فریم ورک‌ها و سیستم‌های مدیریت محتوا نیز نصب خود را با Composer به شما پیشنهاد می‌دهند. خود فریم ورک‌ها نیز گاهی از ده‌ها کتابخانه استفاده می‌کنند که برخی از آن‌ها توسط اشخاص مستقل دیگری توسعه داده می‌شوند که شما با Composer علاوه بر بروز رسانی خود فریم ورک، دیگر کتابخانه‌های موجود در لیست لایبراری‌ها را نیز بروز رسانی می‌کنید.

عملیات بروز رسانی نیز با یک خط دستور در Command line تمام سیستم‌های عامل به سادگی صورت می‌پذیرد.

Composer کار نصب کتابخانه‌های وابسته را نیز به سادگی انجام می‌دهد، به این معنا که اگر کتابخانه خاصی را می‌خواهید نصب کنید که خود نیازمند کتابخانه‌های دیگر است این عملیات به صورت کاملا خودکار انجام می‌پذیرد.

Composer هشدارهای لازم را نیز به کاربران هنگام نصب می‌دهد. مثلا اگر کتابخانه‌ای به PHP نسخه 5.4 به بالا نیاز داشته باشد، و نسخه PHP نصب شده روی سیستم شما کمتر از 5.4 باشد به شما هشدار می‌دهد.

Composer کار گروهی را نیز ساده تر کرده است، چون ممکن است افراد دیگر دخیل در پروژه اطلاع کاملی از کتابخانه‌ها نداشته باشند و فقط از آن‌ها استفاده می‌کنند، بنابراین با Composer هر شخص دخیل در پروژه‌ای به راحتی پروژه را بروز رسانی و توسعه می‌دهد.

Composer در واقع امکانی را فراهم آورده است که بروز رسانی پروژه‌ها بعد از مدت زمان طولانی از تکمیل پروژه به سادگی و با چند کلیک انجام بپذیرد و نیاز به توسعه دهنده تا حد زیادی برای بروز رسانی کاهش یابد.

ایده Composer تلفیقی از ابزارهای npm و Bundler و PEAR است، که بسیار موفق عمل کرده و نظرها را به خود جلب کرده است.

Composer سورس کدها را از کجا گردآوری می‌کند

سایت با نام packagist.org در اختیار توسعه دهندگان قرار دارد که کدهای خود را در آن آپلود می‌کنند. سایت packagist به عنوان منبع اصلی Composer برای نصب پکیج‌ها به برنامه نویسان خدمات می‌رساند.

Composer را چگونه نصب کنیم

Composer بسیار ساده در هر سیستمی نصب می‌شود، و نیازمندی خاصی غیر از PHP نسخه بالاتر از 5.3.2 ندارد.

برای نصب Composer در ویندوز تنها کافی است برنامه Composer را از لینک زیر دانلود کنید:

دانلود

پس از نصب این برنامه سعی کنید سیستم خود را ریستارت کنید و از اضافه شدن مسیر فایل اجرایی Composer به Path‌های سیستم خود اطمینان حاصل کنید.

برای نصب Composer در لینوکس از کامند زیر استفاده کنید:

curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

با کدهای فوق هم Composer نصب می‌شود و هم به پوشه bin اضافه می‌شود تا در آینده تنها با وارد کردن composer بتوانید از این ابزار استفاده کنید.

اگر Composer روی سیستم شما نصب بود در هر مسیری فایلی به نام composer.json ایجاد کنید و درون آن را با محتویاتی مانند زیر پر کنید:

{
    "require": {
        "silex/silex": "~2.0"
    }
}

عبارت silex/silex نام یک فریم ورک PHP است و ~2.0 ورژن آن است.

تابع composer.json از قوانین فایل‌های json تبعیت می‌کند. بخش require مهم ترین بخش است و مشتمل بر کتابخانه‌هایی است که می‌خواهید به پروژه خود اضافه کنید.

بعد از اجرای دستور composer install در کامند لاین یک پوشه به نام vendor اضافه می‌شود که فریم ورک silex و دیگر کتابخانه‌های مورد نیاز اضافه می‌شوند.

در پایین مثالی را بررسی می‌کنیم که در آن به فایل composer.json کتابخانه bootstrap را نیز اضافه می‌کنیم:

{
    "require": {
        "silex/silex": "~2.0",
        "twbs/bootstrap": "^3.3"
    }
}

با اجرای کامند لاین  composer update لایبراری boostrap به پوشه vendor اضافه خواهد شد.

البته بدون ساخت فایل composer.json نیز می‌توانیم پکیج‌ها را نصب کنیم. مانند استفاده از دستور زیر در کامند لاین:

composer require "monolog/monolog":"1.0.*"

با کد فوق فایل composer.json اضافه شده و بعد از اضافه شدن پکیج monolog فرایند پیاده سازی این کتابخانه انجام می‌شود.

نکته: اگر فایل composer.json از قبل موجود باشد پکیج monolog افزوده خواهد شد.

چه تفاوتی میان composer install و  composer update وجود دارد؟

اگر اولین باری است که composer install یا composer update را اجرا می‌کنید درواقع تفاوتی در آن‌ها نمی‌بینید. پس از اولین اجرا اگر دقت کنید فایلی با نام composer.lock به مسیر جاری افزوده می‌شود که اطلاعات آخرین پکیج‌های نصب شده را در خود اضافه می‌کند.

اگر فایل composer.lock در مسیر جاری موجود باشد، حتی با تغییر composer.json دیگر نمی‌توانید از composer install استفاده کنید، چون اطلاعات موجود در composer.lock در اولیت هستند.

فایده وجود فایل composer.lock در این است که در کارهای گروهی وجود داشتن این کار اطمینانی ایجاد می‌کند که تمام برنامه نویسان در حال استفاده از پکیج‌های واحدی باشند.

ولی اگر فایل composer.lock را داشتید و خواستید باز با این وجود پکیج‌های خود را بروز رسانی کنید از دستور composer update استفاده کنید تا اطلاعات موجود در composer.lock بروز رسانی شوند.

قوانین وارد کردن ورژن پکیج‌ها در composer.json

همانطور که در مثال‌های فوق بیان کردیم، در فایل composer.json مقابل نام پکیج باید شماره ورژن پکیج را نیز وارد کنیم. وارد کردن شماره ورژن پکیج از قواعدی خاص پیروی می‌کند که در پایین به آن‌ها اشاره می‌کنیم.

با کد زیر به Composer می‌گویید نسخه‌هایی از پکیج را نصب کند که بالاتر از 2.2 و کوچکتر مساوی 3.5 باشد:

>2.2 <=3.5

عبارت زیر پکیج‌هایی با شماره ورژن بالاتر از 2.6 و کوچکتر از 2.7 را نصب می‌کند:

2.6.*

عبارت زیر منجر به نصب پکیج‌ها با شماره ورژن بالا تر از 2.6 تا کوچکتر از 3 خواهد شد:

2.6~

استفاده از عبارت زیر منجر به نصب پکیج‌ها بین بزرگتر مساوی 5.0 تا کوچکتر مساوی 6.0 می‌شود:

5.0 - 6.0

فراخوانی خودکار کلیه کتابخانه ها

وقتی برای پروژه خود پکیج‌های متنوعی داریم طبیعی است که فراخوانی همه آن‌ها کار ساده‌ای نیست، مخصوصا اگر کار گروهی دائما پکیج‌ها در حال اضافه شدن و یا کم شدن باشند، عملیات فراخوانی همه پکیج‌ها گاهی دچار مشکل می‌شود.

composer برای حل این مشکل فایلی با نام autoload در پوشه vendor ایجاد می‌کند که با اضافه کردن آن به پروژه‌های php خود می‌توانید تمامی کتابخانه‌ها را یک جا داشته باشید. مانند زیر:

require'vendor/autoload.php';
//در اینجا می‌توانید کتابخانه‌ها را فراخوانی کنید

برای ساخت مجدد فایل autoload از دستور زیر در کامند لاین استفاده کنید:

composer dump-autoload --optimize

چگونه پروژه خود را به لیست منابع Composer اضافه کنیم؟

اگر توسعه دهنده نرم افزار Open Source باشید، شاید مایل باشید نرم افزار و سورس‌های خود را با استفاده از Composer در اختیار دیگران قرار دهید.

اولین راه استفاده از سامانه packagist.org است. همانطور که در بالا گفته شد، Composer از لیستی در سایت packagist.org بهره می‌برد که می‌توانید در این سایت اکانت بسازید و پروژه خود را به آن اضافه کنید.

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

مثلا در پایین یک نمونه برای پروژه‌ای معین را مشاهده می‌کنید:

{
    "name": "hitosproject/hitos-application",
    "description": "Hitos Application for Symfony",
    "license": "BSD-3-Clause",
    "keywords": [
        "application",
        "symfony"
    ],
    "authors": [
        {
            "name": "Mahdi Musavi",
            "email": "mahdi@gmail.com"

        }
    ],
    "homepage": "https://hitos.ir/",
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.8.*"
    }
}

برای ساخت خودکار فایل فوق، در کامند لاین دستور زیر را وارد کرده و Enter را فشار دهید:

composer init

اما راه کار دیگری نیز وجود دارد و آن این است که به فایل composer.json آدرس صفحه GitHub پروژه را بدهید، و این صفحه را به عنوان Repository به Composer بشناسانید. نمونه‌ای را در پایین می‌بینید:

{
    "name": "hitos/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/username/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

همانطور که در بالا می‌بینید توانستیم یک پروژه GitHub را به عنوان یک Repository به فایل composer.json اضافه کنیم.

چگونه Composer را بروز رسانی کنیم

برای بروز رسانی composer می‌توانید از دستور زیر استفاده کنید:

composer self-update
تگ ها: windows / ویندوزlinux / لینوکسدانلودمتن باز / open sourceلاراول / Laravelسیمفونی / symfonyکدایگنایتر / Codeigniter