# Unlocking Composer: Useful and Lesser-Known Commands Every PHP Developer Should Know

> Author: [Oussama Ghaieb](https://oussama.ghaieb.com/about-me)
> Canonical: https://oussama.ghaieb.com/posts/unlocking-composer-useful-and-lesser-known-commands-every-php-developer-should-know

# <span class="hover:bg-yellow-100">Unlocking Composer: Useful and Lesser-Known Commands Every PHP Developer Should Know</span>

Composer has become an indispensable tool for PHP developers. While most of us are familiar with commands like `composer install` and `composer update`, there are several lesser-known commands that can simplify workflows and enhance productivity. Let’s dive into some of these hidden gems.

---

## 1. **`composer outdated`**
**What it does:**  
Lists all dependencies that have newer versions available. It’s a great way to keep track of outdated packages without immediately updating them.

**Usage:**  
```bash
composer outdated
```

**Pro tip:** Use `--direct` to only show outdated dependencies you explicitly require.  

```bash
composer outdated --direct
```

---

## 2. **`composer show`**
**What it does:**  
Displays detailed information about installed packages, including version, description, and dependencies.

**Usage:**  
```bash
composer show
```

**Pro tip:** Add the package name to get details about a specific dependency:  

```bash
composer show vendor/package
```

---

## 3. **`composer dump-autoload`**
**What it does:**  
Regenerates the autoloader files. Useful after adding classes or changing namespaces without modifying `composer.json`.

**Usage:**  
```bash
composer dump-autoload
```

**Pro tip:** Use the `--optimize` flag for production environments to create an optimized class map.  

```bash
composer dump-autoload --optimize
```

---

## 4. **`composer global`**
**What it does:**  
Allows you to install and manage global Composer packages, such as tools like `phpunit` or `laravel/installer`.

**Usage:**  
```bash
composer global require vendor/package
```

**Pro tip:** Check global dependencies with:  

```bash
composer global show
```

---

## 5. **`composer depends` (or `why`)**
**What it does:**  
Shows which packages depend on a specific dependency. Useful for debugging dependency conflicts.

**Usage:**  
```bash
composer depends vendor/package
```

**Pro tip:** Use `composer depends --tree vendor/package` to display the dependency tree.

---

## 6. **`composer prohibits` (or `why-not`)**
**What it does:**  
Shows which dependencies prevent a specific package or version from being installed.

**Usage:**  
```bash
composer prohibits vendor/package
```

---

## 7. **`composer validate`**
**What it does:**  
Checks the validity of your `composer.json` file and highlights errors or warnings.

**Usage:**  
```bash
composer validate
```

**Pro tip:** Use `--no-check-publish` to skip checking publishability for private packages.

---

## 8. **`composer fund`**
**What it does:**  
Lists funding information for dependencies, helping you discover projects that could use financial support.

**Usage:**  
```bash
composer fund
```

---

## 9. **`composer create-project`**
**What it does:**  
Sets up a new project by installing a specific package into a directory.

**Usage:**  
```bash
composer create-project vendor/package my-project
```

**Pro tip:** Use `--prefer-dist` to download a package’s distribution archive for faster installations.

---

## 10. **`composer self-update`**
**What it does:**  
Updates Composer itself to the latest version.

**Usage:**  
```bash
composer self-update
```

**Pro tip:** Revert to a specific version using:  

```bash
composer self-update --rollback
```

---

## Conclusion
These lesser-known Composer commands can significantly improve your PHP development workflow. By mastering them, you’ll not only save time but also manage dependencies more effectively. If you have any hidden gems to share, feel free to leave a comment below!
