Composer ، ابزار مدیریت پکیچ ها و پلاگین ها در PHP
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 7 دقیقه

Composer ، ابزار مدیریت پکیچ ها و پلاگین ها در PHP

برای یادگیری بهتر composer شما میتوانید دوره آموزش composer در سایت راکت را مشاهده کنید.

اگر قبلا چیزی را با PHP نوشته باشید، به احتمال زیاد به این نتیجه رسیده اید که هر موقع می خواهید کارهای معمول و تکراری مثل احراز هویت کاربر، مدیریت دیتابیس یا درخواست مسیریابی را به پروژه خود اضافه کنید، مجبور هستید که چرخ را از ابتدا اختراع کنید و تمام مراحل ساخت را از اول پیاده سازی کنید. پی اچ پی در حال حاظر دارای تعداد انگشت شماری از فریم فرک های کامل است که تمام این مشکلات را حل می کند.

 یکی از ابتکارات جهان پی اچ پی در سال های اخیر معرفی Composer است که وظیفه آن مدیرت پکیج ها می باشد Composer بر خلاف ابزار PEAR دارای روند پیچیده ای نیست و کار کردن با آن بسیار راحت است.

Composer چیست ؟

ابزار composer یک dependency managemer برای برنامه های نوشته شده به زبان php است. این ابزار کمکی به شما اجازه می دهد تا کتابخانه های و پلاگین های مورد نیاز پروژه اتان را تعریف و آن ها را در پروژه اتان نصب کنید.

Composer   تمام بسته های مورد نیاز برای پروژه شما را مدیریت می کند. به این معنی که کامپوزر تمام کتابخانه های مورد نیاز را دانلود و آنها را در یک محل ذخیره و مدیریت می کند.

 این نوع از مدیریت برای وابستگی ها در پروژه مفهوم جدیدی نیست، در واقع، ایده ساخت کامپوزر از NPM که یک پکیج منیجر برای Node.js و Bundler برای Ruby آمده است.

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

مفهوم Dependency management  

در واقع composer یک ابزار مدیریت کننده ی پکیج ها نیست. هر چند پکیج های زیادی را در خود دارد اما مفهومی فراتر را دنبال می کند. composer علاوه بر دارا بودن تعداد زیادی پکیج های مورد استفاده در پروژه ی شما، آنها را با یک دستور در پوشه ی vendor واقع در لیست پوشه های شما ایجاد میکند. همچنین به طور پیش فرض هیچ چیز را global نصب نمی کند.

مفهوم composer در واقع مفهوم جدیدی در برنامه نویسی وب نیست و قبل از آن هم ابزارهای اینچنینی در وب وجود داشته اند. مانند npm یا node package manager که مخصوص پلت فرم NodeJS هستند یا همچنین ابزار bundler برای Ruby. در واقع فقط برای PHP تا به حال همچنین مفهوم و ابزاری وجود نداشت بلکه قبلا برای زبان های دیگر وجود داشته بود.

در واقع کار اصلی که composer انجام می دهد اینست که کتابخان های مورد نیاز پروژه اتان را برایتان نصب می کند. همچنین اگر این کتابخانه ها خود به کتابخانه های دیگری نیز نیاز داشته باشند آنها را هم نصب می کند.

تعریف وابستگی (Dependency)بیایید با ذکر یک مثال این داستان را شفاف تر کنیم. فرض کنیم که شما در پروژه اتان به یک کتابخانه ی کوچک جهت عمل log in دارید و برای این کار کتابخانه ی monolog را انتخاب می کنید. برای اینکه این کتابخانه را به پروژه اضافه کنیم لازم است که در فایل composer.json که در ریشه ی پروژه اتان است دستور زیر را وارد کنید:


{

    "require": {

        "monolog/monolog": "1.2.*"

    }

}

به این راحتی مشخص کردیم که پروژه ی ما نیاز به کتابخانه ی monolog دارد. دقت داشته باشید که فایل composer.json تنها یک تعریف را انجام می دهدو شما برای دانلود کتابخانه و دریافت آن باید composer را اجرا کنید.

نیازمندی های سیستمی

  • composer برای اجرا به php نسخه ی ۵٫۳٫۲ به بالا نیاز دارد.

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

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

پس از نصب این برنامه سعی کنید سیستم خود را ریستارت کنید و از اضافه شدن مسیر فایل اجرایی 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 برای حل این مشکل فایلی با نام 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 بشناسانید. نمونه‌ای را در پایین می‌بینید :

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

{
    "name": "hitos/blog",
    "repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/username/hello-world"
        }

    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

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

برای بروز رسانی composer می‌توانید از دستور:composer self-update استفاده نمائیم.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
3 از 1 رای

/@roocketir

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

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید