PHP Composer and Autoloading

PHP Composer and Autoloading

Composer is PHP's package manager. It downloads libraries and generates an autoloader so your own classes are available without any manual require.

1 - Installing Composer

# macOS / Linux
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# Windows: download installer from https://getcomposer.org

2 - Starting a Project

composer init              # interactive setup
composer require guzzlehttp/guzzle        # add dependency
composer require --dev phpunit/phpunit    # dev only

3 - composer.json

{
    "name": "myapp/api",
    "require": {
        "php": "^8.2",
        "guzzlehttp/guzzle": "^7.0"
    },
    "autoload": {
        "psr-4": {
            "App\": "src/"
        }
    }
}

4 - Using Autoloading

<?php
require "vendor/autoload.php";

// src/Models/User.php  (namespace App\Models)
// src/Services/Mailer.php (namespace App\Services)

use App\Models\User;
use App\Services\Mailer;

$user   = new User(1, "Alice");
$mailer = new Mailer();

5 - Essential Commands

composer install        # install from lock file
composer update         # update within constraints
composer dump-autoload  # regenerate autoloader
composer outdated       # show outdated packages
composer remove pkg     # uninstall a package

Note: Always commit composer.lock to version control. It guarantees every developer and every deployment server installs the exact same versions of every package.

-Tip-