
Composer ابزاری برای مدیریت وابستگی در پروژه های PHP می باشد. زمانی که شما تصمیم می گیرید تا یک پروژه PHP را ایجاد کنید قطعا با مسائلی برخورد خواهید کرد که راه حل آنها استفاده از کتابخانه ها یا پکیج های موجودی است که برای این مساله ها ارائه شده اند زیرا با این کار در فاکتور های مهمی همچون زمان و هزینه صرفه جویی کرده اید و به عبارت دیگر چرخ را از نو اختراع نمی کنید. از این دست مسائل می توان به:
- اعتبار سنجی کاربر
- مدیریت پایگاه داده
- مسیریابی درخواست
اشاره کرد.
اما در این میان کتابخانه ها یا پکیج های موجود هم دارای وابستگی های خاص خود هستند و به عنوان توسعه دهنده PHP شما باید انرژی مضاعفی را برای یافتن و تطبیق این وابستگی ها صرف کنید.
در ادامه مطلب همراه من باشید.
ایده Composer جدید نیست و الهام گرفته از npm در Node یا bundler در Rubby می باشد. برای مثال فرض کنید که شما:
- یک پروژه با وابستگی به تعدادی کتابخانه دارید.
- برخی از این کتابخانه ها، خود به کتابخانه های دیگر وابستگی دارند.
در این میان Composer:
- شما را قادر می سازد تا اعلان کنید که به چه کتابخانه ها یا پکیج هایی نیاز دارید.
- نسخه ای از کتابخانه ها یا پکیج هایی که مورد نیاز و قابل نصب هستند را در پروژه شما دانلود می کند.
برای نصب Composer در ویندوز کافی است فایل نصبی آن را از سایت getcomposer.org دریافت کنید و روال نصب را مانند دیگر فایل های نصبی دنبال کنید. با دانلود فایل نصبی شما به آخرین نسخه از Composer دسترسی خواهید داشت و PATH ویندوز را به صورت خودکار تنظیم می کند. اما باید به این نکته توجه داشت که Composer برای اجرا نیاز به PHP نسخه 5.3.2 به بالاتر دارد.
پس از نصب Composer، همه آنچیزی که برای شروع لازم است تنها یک فایل composer.json می باشد که وابستگی های پروژه شما را مشخص می کند.
در اینجا ما می خواهیم یک پروژه ساده را با فریموورک Slim ایجاد کنیم. در ابتدا فایل composer.json را ایجاد و کد زیر را در آن قرار می دهیم:
{
"require": {
"slim/slim": "2.*"
}
}
همانطور که در کد JSON بالا مشاهده می کنید، شی require شامل نگاشتی بین نام پکیج، کتابخانه یا فریموورک مورد نظر و نسخه آن می باشد. پس از اینکه فایل بالا را ایجاد کردیم. باید در همان مکانی که فایل composer.json را ایجاد کردیم وارد محیط خط فرمان ویندوز بشویم و دستور زیر را اجرا کنیم:
composer install
پس از اجرای این دستور، Composer در مخزن پکیج پیش فرض خود یعنی Packagist درخواست های ما را جست و جو می کند و در صورت موجود بودن آن را دانلود می کند. مخزن Packagist با آدرس packagist.org در دسترس می باشد که مخزن غنی از پکیج ها، کتابخانه ها و فریموورک های قدرتمندی همچون Laravel و Symphony می باشد که هر دو از Composer برای مدیریت وابستگی ها استفاده می کنند. شما هم می توانید در این سایت به جست و جوی پکیج مورد نظر خود بپردازید و در صورت یافتن، به اطلاعات پکیج دسترسی پیدا کرده و از آن در پروژه خود استفاده کنید.
پس از اجرای موفقیت آمیز دستور install، در کنار فایل composer.json پوشه ای به نام vendor ایجاد می شود که تمامی وابستگی ها مورد نیاز ما را در خود جای داده است. زمانی که وارد این پوشه می شویم با فایلی به نام autoload.php مواجه خواهیم شد. در واقع این فایل کار را برای توسعه دهنده بیش از پیش ساده کرده است. فرض کنید شما کتابخانه یا پکیج مورد نظر خود را دانلود کردید، حالا باید آنها را در پروژه PHP خود تک به تک require کنید این کار علاوه بر اینکه زمانگیر است ممکن است درصد خطای توسعه دهنده را هم افزایش دهد. اما اینجا Composer به صورت خودکار فایل autoload.php را ایجاد کرده که شامل require کردن تمام وابستگی های پروژه می شود. حال کافی است تا فایل PHP پروژه خودمان را ایجاد کنیم و این فایل را به صورت زیر require کنیم:
<?php
require 'vendor/autoload.php';
?>
همانطور که در کد بالا مشاهده می کنید، تمامی وابستگی های پروژه ما در همین یک خط خلاصه می شود. برای استفاده از فریموورک Slim که یک فریموورک سبک و ساده برای ایجاد وب سایت می باشد به صورت زیر عمل می کنیم:
<?php
// Autoload
require 'vendor/autoload.php';
// Instantiate a Slim application
$app = new \Slim\Slim();
// Define a HTTP GET route
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
// Run the Slim application
$app->run();
?>
پس از اینکه کد بالا را در فایل پروژه وارد کردیم، در پوشه پروژه وارد خط فرمان ویندوز می شویم و لوکال هاست PHP را روی پورت 8080 به صورت زیر اجرا می کنیم:
php -S localhost:8080
پس از اجرا شدن لوکال هاست PHP، وارد مرورگر خود شده و آدرس localhost:8080/hello/yourname را وارد می کنیم:
نتیجه به صورتی که در تصویر بالا مشاهده می کنید نمایش داده می شود.
Composer | PHP |