Kritim Yantra
Apr 04, 2025
PHP Composer is like a smart shopping assistant for your PHP projects. It helps you:
Why use Composer?
Imagine baking a cake:
composer --version
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
# Move to global location
sudo mv composer.phar /usr/local/bin/composer
Verify installation:
composer --version
Create a new folder and initialize:
mkdir my-project
cd my-project
composer init
You'll be asked:
john/my-project
)stable
)project
)Example generated composer.json
:
{
"name": "john/my-project",
"description": "My awesome project",
"type": "project",
"require": {}
}
To add the popular Monolog logging library:
composer require monolog/monolog
This:
composer.json
vendor/
composer.lock
Your composer.json
now looks like:
{
"require": {
"monolog/monolog": "^2.0"
}
}
Packages only needed for development (like testing tools):
composer require phpunit/phpunit --dev
Composer can automatically load your classes. Create this structure:
my-project/
├── composer.json
└── src/
└── MyClass.php
src/MyClass.php:
<?php
namespace John\MyProject;
class MyClass
{
public function hello()
{
return "Hello from Composer!";
}
}
Update composer.json
:
{
"autoload": {
"psr-4": {
"John\\MyProject\\": "src/"
}
}
}
Generate autoloader:
composer dump-autoload
Now use your class:
require 'vendor/autoload.php';
$obj = new John\MyProject\MyClass();
echo $obj->hello();
Install from lock file (team members should do this):
composer install
Update all packages:
composer update
Update specific package:
composer update monolog/monolog
Constraint | Meaning | Example |
---|---|---|
^1.2.3 |
1.2.3 <= version < 2.0.0 | Safe updates |
~1.2.3 |
1.2.3 <= version < 1.3.0 | Patch updates |
1.2.* |
Any 1.2 version | Wildcard |
>=1.2 |
1.2 or higher | Minimum version |
1.2 - 1.5 |
Between 1.2 and 1.5 | Range |
dev-main |
Latest commit from Git branch | Development |
Command | Description |
---|---|
composer init |
Create new composer.json |
composer require [package] |
Add a package |
composer remove [package] |
Remove a package |
composer install |
Install all dependencies |
composer update |
Update all packages |
composer show |
List installed packages |
composer search [term] |
Search Packagist |
composer outdated |
Show outdated packages |
composer validate |
Check composer.json for errors |
composer dump-autoload |
Refresh autoloader |
Memory Limit Errors
COMPOSER_MEMORY_LIMIT=-1 composer update
Version Conflicts
composer why [package]
to find conflictsMissing Extensions
Slow Downloads
Use China mirror (if needed):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
Automate tasks in composer.json
:
{
"scripts": {
"test": "phpunit",
"deploy": [
"composer install --no-dev",
"php artisan migrate"
]
}
}
Run with:
composer run test
Add in composer.json
:
{
"repositories": [
{
"type": "vcs",
"url": "git@github.com:yourcompany/private-package.git"
}
]
}
composer.json
PHP Composer has revolutionized PHP development by:
Best Practices Checklist:
composer.lock
vendor/
in .gitignore
Now you're ready to manage PHP dependencies like a pro! Start by adding Composer to your next project and explore the vast world of PHP packages available.
No comments yet. Be the first to comment!
Please log in to post a comment:
Continue with Google