devnotes.

Composer and Autoloading

Composer is PHP's dependency manager — it installs and updates third-party libraries and generates an autoloader so you never need to write manual require statements for your own classes.

composer init                       # create a composer.json interactively
composer require guzzlehttp/guzzle  # install a package
composer require --dev phpunit/phpunit # install a dev-only dependency
composer install                    # install everything from composer.lock
composer update                     # update dependencies to latest allowed versions

PSR-4 autoloading maps a namespace prefix to a directory, configured in composer.json:

{
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

After running composer dump-autoload, any class under the App namespace is automatically loaded from app/ when referenced — App\Models\User loads from app/Models/User.php — with zero manual require or include statements.

Bootstrap a project by requiring Composer's generated autoloader once, at the entry point:

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

use App\Services\UserService;

$service = new UserService();

Composer also enforces semantic versioning constraints (^1.2 means 'compatible with 1.2, up to but not including 2.0') and locks exact installed versions in composer.lock, which should always be committed to version control so every environment installs identical dependency versions.

PHP Composer and PSR-4 Autoloading Guide | DevNotes