تعداد بازدید: 28

Composer (قسمت اول)

composer یک ابزار رابط خط فرمان (command line interface) برای مدیریت و نصب پروژه های PHP می باشد. بوسیله آن می توان روی پروژه خود پکیج هایی (پروژه ها یا کتابخانه ها) را نصب کنید یا بالعکس پروژه خود را قابل نصب بر روی پروژه های دیگر کنید.

Composer Dependency Manager

این ابزار را باید روی سیستم عامل خود نصب و پیکره بندی کنید و پروژه ها را با استفاده از آن بسازید و پکیج هایی را نیز به پروژه خود اضافه کنید و در نهایت پروژه ها را به همراه کتابخانه ها به هر جا منتقل کنید.

پروژه یا کتابخانه یا پکیج یک معنی را می دهد. شما نرم افزار در حال توسعه خود را یک پروژه می نامید. اگر آن را به packagist منتقل کنید می توان به آن یک کتابخانه یا پکیج گفت که حال پیش نیاز هایی دیگر از سایر کتابخانه ها (dependency manager ) نیز داشته باشد.

ساختار کلی یک پروژه PHP ساخته شده مبتنی بر Composer :

  • composer.json : تنظیمات اصلی پکیج یا پروژه که شامل اطلاعات کلی پروژه (properties) و کتابخانه های نصب شده روی پکیج می باشد.
  • composer.lock : این فایل نمایش دهنده وضعیت جاری پروژه می باشد. شامل ورژن پکیج های نصب شده روی پروژه و … .
  • vendor : فروشنده های پکیج. هر پکیج در packagist یک فروشنده دارد که وقتی آن را در کامپیوتر خود می سازد از روی نام کاربر سیستم عامل ساخته می شود. در این دایرکتوری لیست پکیج ها می باشد و همچنین فایل autoload و composer .

Package Properties

اطلاعاتی در رابطه با پکیج یا پروژه می باشد که در فایل composer.json موجود می باشد. این اطلاعات شاخصه پکیج شما در مکان های مختلف می باشد.

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

برخی از شاخصه های پکیج (Package Properties) که در فایل composer.json موجود می باشد :

  • name : نام پکیج یا پروژه که به صورت ترکیبی از نام vendor و نام پروژه می باشد. به طور مثال tymon/jwt-auth که tymon نام vendor و jwt-auth نام پکیج می باشد. یا symfony/console که symfony نام vendor می باشد و console پکیج می باشد.
  • description : توضیحات پروژه یا پکیج یا کتابخانه.
  • version : ورژن پکیج که از فرمت X.Y.Z یا vX.Y.Z پیروی می کنند. به طور مثال 1.0.2 یا v2.0.4 .
  • type : این نوع پروژه را مشخص می کند و بر اساس همین نوع منطق نصب پکیج متقاوت خواهد بود. پروژه می تواند از نوع کتابخانه (library) , پروژه (project) باشد و همچنین خودتان هم می توانید نوع جدیدی ایجاد کرده و منطق نصب لازم را برای آن تعیین کنید به طور مثال پلاگین وردپرس (wordpress-plugin) , یا ماژولی برای سیستم هایی نظیر symfony (symfony-bundle) باشد.
  • keyword : آرایه ای از کلمات کلیدی مرتبط با پروژه .
  • authors : نویسنده های پکیج که هر کدام به شکل یک شئ با خصوصیاتی نظیر homepage , name , email , role می باشند.

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

به دوحالت می توانید این اطلاعات را پر کنید . یا اینکه فایل composer.json را دستی بسازید و فرمان composer install را وارد کنید یا با دستور composer init یک installation wizard را بالا بیاورید و یک به یک این مقادیر را وارد کنید.

Package links

پکیج هایی که روی پروژه نصب می کنید به صورت یک شئ از مقدار نام و ورژن نصب می شود "josh/faker": "1.0.0". برای نصب پکیج نیز از همین ترکیب استفاده می کنیم.

روش اول ) در فایل composer.json ترکیب را وارد می کنیم و دستور composer install رو وارد می کنیم.

برای تغییر ورژن نیز می توان فایل composer.json را تغییر داد و فرمان composer update را وارد کنید.

روش دوم ) با استفاده از فرمان composer require پکیج را نصب کنید.

در فرمان بالا پکیج josh/faker ورژن 1.0.0 را نصب کردیم. برای استفاده از پکیج های نصب شده باید ابتدا فایل autoload.php را فراخوانی کنیم (این فایل در دایرکتوری vendor می باشد) و namespace ماژول های مورد نیاز را use کنیم. برای ادامه کار می توانید به مستندات پکیج مراجعه کنید.

با استفاده فرمان composer remove josh/faker می توان پکیج josh/faker را حذف کنیم . همچنین برای بروزرسانی فایل autoload.php می توانید فرمان composer dump-autoload را وارد کنید.

اگر بخواهید یک پروژه را به صورت کامل کپی بگیرید و به عنوان یک پروژه جدید برای خود نصب کنید باید دستور زیر را اجرا کنید :

composer create-project PACKAGENAME

ممکن است شما یک پروژه داشته باشید و یک پرژه (مثلا faker) را روی آن نصب کنید و یا یک پروژه را به صورت کامل بهمراه comopser properties به عنوان پروژه خود نصب کنید. به طور مثال فرض کنید که پروژه josh/faker را به دو صورت create-project و install نصب می کنیم.

روش اول ) دستور زیر را برای ساخت پروژه جدید از روی josh/faker اجرا می کنیم و ساختار فایل آن را مشاهده می کنیم.

یک دایرکتوری با نام persianFaker ساخته شده و پروژه josh/faker در آن قرار می گیرد. (بهمراه تنظیمات composer.json پروژه faker)

این دستور یک دایرکتوری با نام persianFaker می سازد و faker را به همراه تمامی فایل ها و dependency های آن برای شما نصب می کند.

روش دوم ) ابتدا یک پروژه با استفاده از composer init می سازیم و بعد دستور زیر را می زنیم تا کتابخانه josh/faker روی آن نصب گردد.

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

تنظیمات composer.json در این روش برابر با مقادیریست که در زمان init ساختیم.

نکته : در ساخت پروژه ما اپشن های prefer-dist و prefer-source را داریم :

  • prefer-dist : این روش نصب بدون VSC یا همان none version control می باشد.
  • prefer-source : نصب پروژه به همراه VSC یا version control می باشد. در انتهای این روش مجددا از شما می پرسد که فایل گیت را پاک کند یا خیر.

Autoload mapping

با استفاده از composer می توانیم تمامی فایل های پروژه خود را با استفاده از فایل autoload.php فراخوانی کنیم. برای این کار از autoload در فایل composer.json استفاده می کنیم. برای این کار به سه کلید psr-4 , classmap , files نیاز داریم :

  • psr-4 : یک convention می باشد برای نحوه نامگذاری namespace ها در پروژه. به طوری که با توجه به ساختار پوشه بندی ها namespace ها را انتخاب می کنیم. مثلا کلاس Cat واقع در مسیر animals/demonstic/Cat.php باید namespace برابر با Animals\Demonstic بگیرد. این مقدار به صورت شئ مقدار دهی می شود.
  • classmap : آرایه ای از آدرس فایل ریشه کلاس ها را به آن می دهیم و تمامی کلاس های موجود در آن دایرکتوری را فراخوانی می کند.
  • files : آرایه ای از فایل های مورد نیاز برای فراخوانی را به آن می دهیم.

به طور مثال فرض کنید یک پروژه داریم ساختار فایل های زیر را دارد :

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

برای فراخوانی کلاس های animals از psr-4 استفاده کرده ایم و برای فراخوانی کلاس های staff از classmap و برای فراخوانی functions.php از files استفاده کرده ایم.

دقت داشته باشید باید دایرکتوری animals با توجه به convention psr-4 namespace گذاری شده باشد. در پایان از این کلاس ها در فایل index.php استفاده می کنیم :

نتیجه گیری

برای نصب یک کتابخانه می توان یک پروژه را به صورت خام init کرد و dependency های آن را چه برای require , require-dev تعیین کرد و فایل composer.json آن را تغییر داد و بعد composer install را اجرا کرد و یا اینکه برای نصب کتابخانه در پروژه موجود از فرمان composer require استفاده کرد و یا اگر پروژه را به صورت کامل به همراه تنظیمات composer آن می خواهید از فرمان composer create-project استفاده می کنید(مثلا برای ساخت وب سایت با لاراول)

مطالب مشابه

کار با gdLibrary در php

کتابخانه gd برای کار بار تصاویر به صورت پویا در زبان های برنامه نویسی نظیر PHP می باشد که توسط زبان C نوشته شده است....

هدر های Http در درخواست و پاسخ

Http Headers (قسمت اول)

هر گاه اطلاعاتی را از سرور نیاز داشته باشیم باید یک درخواست به آن بزنیم و پاسخ را از سمت سرور دریافت کنیم. بر این...

آرایه ها در php

در این مقاله قصد داریم تا آرایه ها رو در php بررسی کنیم و همچنین توابع مرتبط با آرایه ها رو بررسی کنیم. انواع آرایه در...

اشتراک گذاری :

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Composer (قسمت اول)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *