Composer PHP-র standard package manager — এটা external library install আর manage করে, আর (একই রকম useful) একটি project-এর নিজের ক্লাস স্বয়ংক্রিয়ভাবে load করা handle করে, প্রতিটি file-এর জন্য একটি manual require ছাড়াই।
composer require guzzlehttp/guzzleএটা package-টা একটি vendor/ folder-এ download করে আর (এর version সহ) একটি composer.json file-এ রেকর্ড করে, যাতে ঠিক একই dependency যেকোনো জায়গায় আবার install করা যায়।
{
"require": {
"guzzlehttp/guzzle": "^7.0"
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}Entry file-এর উপরে একটি লাইন, প্রতিটি installed package-এর ক্লাস load করে।
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();উপরের composer.json-এ "App\\": "app/" লাইন Composer-কে বলে App namespace-এর যেকোনো ক্লাস app/ folder-এ থাকে, একই path অনুসরণ করে — একটি project-এর নিজের file-এর জন্যও কোনো manual require দরকার নেই।
// app/Models/User.php
namespace App\Models;
class User {
// ...
}
// project-এর অন্য যেকোনো জায়গায়, 'vendor/autoload.php'-এর পরে:
use App\Models\User;
$user = new User(); // Composer স্বয়ংক্রিয়ভাবে file খুঁজে load করেএকটি ক্লাস যোগ বা move করার পর, composer dump-autoload চালালে autoloader-এর internal class map পুনর্গঠন হয়।
composer dump-autoload| Command | কী করে |
|---|---|
| composer init | একটি project-এর জন্য একটি নতুন composer.json তৈরি করে |
| composer require | একটি package install করে আর composer.json-এ যোগ করে |
| composer install | composer.json-এ list করা সবকিছু install করে — একটি project clone করার সময় ব্যবহৃত |
| composer update | package-কে তাদের সর্বশেষ অনুমোদিত version-এ আপডেট করে |
| composer dump-autoload | ক্লাস যোগ/move করার পর autoloader পুনর্গঠন করে |
Package কোথা থেকে আসে
Packagist (packagist.org) হলো official package registry যা Composer search করে — একটি ভালো-maintained package ইতিমধ্যে সমাধান করেছে এমন কিছু শুরু থেকে লেখার আগে সেখানে check করার যোগ্য।