Composer، یک ابزار برای مدیریت برنامه‌های پیش نیاز برای PHP است (مشابه npm برای Node.js یا pip برای پایتون). Composer، کلیه بسته‌های PHP مورد نیاز پروژه شما را (که پروژه شما به آن‌ها وابسته است) نگه‌داری کرده و آن‌ها را برای شما مدیریت می‌کند.

 

در این آموزش، چگونگی نصب Composer و نیز نحوه استفاده از آن در سیستم عامل اوبونتو 18.04 شرح داده می‌شود. همین مراحل را می‌توان برای اوبونتو 16.04 نیز استفاده کرد.

 

این مطلب نیز ممکن است برای شما مفید باشد: PHP چیست؟

 

دقت کنید که برای اجرای دستورات زیر، باید به‌عنوان کاربر دارای امتیازات sudo وارد سیستم شوید. علاوه‌براین باید PHP برروی سیستم Ubuntu 18.04 شما نصب شده باشد.

 

نصب Composer PHP

برای نصب Composer روی سیستم اوبونتو، مراحل زیر را انجام دهید:

1. قبل از بارگیری و نصب Composer، ابتدا لیست بسته‌ها را به روز کرده و برنامه‌های پیش نیاز را نصب نمایید:

$ sudo apt update
$ sudo apt install wget php-cli php-zip unzip

 

2. اکنون که php cli را در دستگاه خود نصب کردید، می‌توانید نصب کننده Composer را به‌صورت زیر بارگیری نمایید:

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

دستور بالا، فایل Composer-setup.php را در دایرکتوری فعلی بارگیری می‌کند.

 

3. در مرحله بعد، باید با مقایسه مقدار hash (هش) SHA-384 اسکریپت با جدیدترین هش نصب کننده در صفحه‌ی Composer Public Keys/Signatures، صحت داده‌های اسکریپت را بررسی نمایید.

در اینجا از دستور wget، بصورت زیر برای بارگیری امضای آخرین نصب کننده Composer از صفحه Github مربوط به Composer استفاده و در متغیری به نام HASH ذخیره شده است:

$ HASH="$(wget -q -O - https://composer.github.io/installer.sig)"

اکنون دستور زیر را اجرا کنید تا مطمئن شوید که اسکریپت نصب خراب نیست:

$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

اگر مقادیر هش‌ منطبق باشند، خروجی زیر را مشاهده خواهید کرد:

Output:
Installer verified

اگر مقادیر هش‌ مطابقت نداشته باشند، خروجی Installer corrupt را مشاهده خواهید کرد. در این حالت، باید اسکریپت نصب Composer را مجدداً بارگیری کرده و مجدداً مقدار متغیر HASH$ را با echo $HASH بررسی نمایید. پس از تأیید نصب، می‌توانید مرحله بعدی را ادامه دهید.

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب pip در اوبونتو 18.04

 

4. دستور زیر، Composer را در دایرکتوری usr/local/bin/ نصب می‌کند:

$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Output:
All settings correct for using Composer
Downloading...

Composer (version 1.8.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Composer، به عنوان یک فرمان گسترده در سیستم نصب شده است و برای همه کاربران در دسترس خواهد بود.

 

5. آخرین مرحله، تأیید نصب است:

$ composer

دستور فوق، نسخه، دستورات و آرگومان‌های Composer را چاپ می‌کند.

Output:
______
/ ____/___  ____ ___  ____  ____  ________  _____
/ /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.8.5 2019-04-09 17:46:47

Usage:
    command [options] [arguments]

اگر می‌خواهیدبه ازای هر پروژه، یک نصب از composer داشته باشید، از دستور php Composer-setup.php استفاده کنید که یک فایل با نام Composer.phar در دایرکتوری فعلی شما ایجاد می‌کند. در این صورت، شما می‌توانید با اجرای <composer.phar <command/. از Composer استفاده نمایید.

 

نصب سریع Composer

برای نصب سریع Composer روی سیستم اوبونتو، مراحل زیر را دنبال کنید:

1. PHP CLI و Zip را نصب نمایید:

$ sudo apt update && sudo apt install wget php-cli php-zip unzip curl

2. Composer را با دستور زیر بارگیری کنید:

$ curl -sS https://getcomposer.org/installer |php

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب Node.js و npm در CentOS 8

 

3. فایل Composer را به دایرکتوری usr/local/bin/ انتقال دهید:

$ sudo mv composer.phar /usr/local/bin/composer

 

شروع کار با Composer

اکنون که Composer روی سیستم اوبونتوی شما نصب شده است، نحوه استفاده از Composer را در یک پروژه PHP به شما نشان خواهیم داد.

اولین قدم، ایجاد یک دایرکتوری به‌عنوان دایرکتوری اصلی پروژه و نگه داشتن فایل Composer.json است. این فایل، پروژه PHP شما از جمله برنامه‌های پیش نیاز و دیگر داده‌های PHP را توصیف می‌کند.

دایرکتوری پروژه را ایجاد کرده و به آن تغییر مکان دهید:

$ mkdir ~/my-first-composer-project
$ cd ~/my-first-composer-project

 

قدم بعدی، ایجاد یک Composer.json جدید با استفاده از دستور <composer require <package name و تعیین بسته برای بارگیری است.

در این مثال، یک برنامه ایجاد می‌کنیم که زمان فعلی را با استفاده از بسته‌ای بنام carbon چاپ می‌کند.

دستور زیر را برای راه‌اندازی یک Composer.json جدید و نصب بسته carbon اجرا نمایید:

$ composer require nesbot/carbon
Output:
Using version ^1.33 for nesbot/carbon
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing symfony/polyfill-mbstring (v1.9.0): Downloading (100%)
  - Installing symfony/translation (v4.1.4): Downloading (100%)
  - Installing nesbot/carbon (1.33.0): Downloading (100%)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
symfony/translation suggests installing psr/log-implementation (To use logging capability in translator)
Writing lock file
Generating autoload files

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

 

این مطلب نیز ممکن است برای شما مفید باشد: تغییر نسخه پیشفرض PHP CLI در لینوکس

 

اگر دایرکتوری پروژه خود را لیست کنید، می‌بینید که شامل دو فایل Composer.json و composer.lock و یک دایرکتوری vendor است.

$ ls -l
Output:
-rw-r--r-- 1 linuxize users   60 Aug 29 00:50 composer.json
-rw-r--r-- 1 linuxize users 6.8K Aug 29 00:50 composer.lock
drwxr-xr-x 5 linuxize users 4.0K Aug 29 00:50 vendor

 

دایرکتوری vendor، دایرکتوری است که در آن برنامه‌های پیش نیاز پروژه ذخیره می‌شود.

Composer.lock، شامل لیستی از کلیه بسته‌های نصب شده به همراه نسخه بسته‌ها می‌باشد.

Composer.json، پروژه PHP و کلیه نرم افزارهای پیش نیاز PHP را شرح می‌دهد.

Composer، قابلیت‌های autoload (اجرا به صورت خودکار) را فراهم می‌کند که امکان استفاده از کلاس‌های PHP را بدون نیاز به require یا include کردن فایل‌ها ارائه می‌نماید.

یک فایل با نام test.php ایجاد کرده و کد زیر را اضافه نمایید:

<?php

require __DIR__ . '/vendor/autoload.php';

use Carbon\Carbon;

printf("Now: %s", Carbon::now());

 

بیایید کدها را خط به خط تجزیه و تحلیل کنیم.

در اولین خط پس از باز شدن برچسب php، فایل vendor/autoload.php وجود دارد که به‌طور خودکار توسط composer تولید می‌شود. این فایل تمام کتابخانه‌ها را به‌صورت خودکار اجرا می‌کند.

در خط بعد، Carbon/Carbon را به‌عنوان Carbon داریم و در آخرین سطر، برنامه زمان فعلی را با استفاده از روش Carbon now چاپ می‌نماید.
اسکریپت را بصورت زیر اجرا کنید:

$ php testing.php

خروجی باید چیزی شبیه به این باشد:

Output:
Now: 2018-08-28 23:47:19

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب Laravel در اوبونتو 18.04

 

پس از آن، اگر می‌خواهید بسته‌های PHP خود را به روز کنید، می‌توانید از دستور زیر استفاده نمایید:

$ composer update

دستور بالا، نسخه‌های جدیدتر بسته‌های نصب شده را بررسی کرده و composer در صورت یافتن نسخه جدیدتر و تطابق نسخه با نسخه مشخص شده در Composer.json، بسته را به‌روز می‌نماید.

 

 

منبع:

linuxize