Composer is PHP's dependency manager. It installs packages from Packagist and generates an autoloader so you use App\Models\User; instead of manual require chains.
composer.json essentials
{
"require": {
"monolog/monolog": "^3.0"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Workflow
composer install— install from lock filecomposer require vendor/package— add dependencyrequire 'vendor/autoload.php';in front controller
PSR-4 autoloading
Namespace App\Controllers\UserController maps to src/Controllers/UserController.php. Frameworks (Laravel, Symfony) build on this convention.
Important interview questions and answers
- Q: composer.json vs composer.lock?
A: JSON declares ranges; lock pins exact versions for reproducible installs—commit lock in apps. - Q: PSR-4?
A: Autoloading standard mapping namespaces to directory paths.
Self-check
- Which file do you require to enable autoloading?
- Why commit composer.lock?
Tip: Commit composer.lock in applications so deploys install identical dependency versions.
Interview prep
- PSR-4 autoloading?
Maps namespace prefixes to directory paths so
use App\Model\Userloads the correct file without manual requires.