Bird
Raised Fist0
PHPprogramming~20 mins

Composer require and dependency management in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Composer Dependency Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of composer show after requiring a package?

You run composer require monolog/monolog in your PHP project. Then you run composer show monolog/monolog. What output will you see?

AOutputs only the version number of monolog/monolog
BDisplays package name, version, description, and dependencies of monolog/monolog
CLists all packages except monolog/monolog
DShows an error: Package monolog/monolog not found
Attempts:
2 left
💡 Hint

Think about what composer show does for a specific package.

❓ Predict Output
intermediate
2:00remaining
What happens if you run composer require with a non-existent package?

You run composer require vendor/nonexistent-package in your project. What will happen?

AComposer adds the package to composer.json but does not install it
BComposer installs an empty package with no files
CComposer shows an error: Could not find package vendor/nonexistent-package
DComposer installs the latest stable version of a similar package automatically
Attempts:
2 left
💡 Hint

Composer only installs packages that exist in repositories it knows.

🔧 Debug
advanced
2:00remaining
Why does composer install not install new packages added manually to composer.json?

You manually add a new package to composer.json under require but running composer install does not install it. Why?

ABecause you must run <code>composer update</code> to install new packages after editing composer.json manually
BBecause the package is already installed globally and Composer ignores local installs
CBecause the package version constraint is invalid and Composer skips it silently
DBecause <code>composer update</code> only updates existing packages, not install new ones added manually
Attempts:
2 left
💡 Hint

Think about the difference between composer install and composer update.

📝 Syntax
advanced
2:00remaining
Which composer.json snippet correctly requires a package with a version constraint?

Choose the correct require section snippet to require guzzlehttp/guzzle version 7.0 or higher but less than 8.0.

A"require": { "guzzlehttp/guzzle": "^7.0" }
B"require": { "guzzlehttp/guzzle": ">=7.0,<8.0" }
C"require": { "guzzlehttp/guzzle": "7.*" }
D"require": { "guzzlehttp/guzzle": ">=7.0 <8.0" }
Attempts:
2 left
💡 Hint

Composer uses caret (^) for compatible version ranges.

🚀 Application
expert
2:00remaining
How to require a package only for development using composer?

You want to add phpunit/phpunit as a dependency only for development, not for production. Which command do you run?

Acomposer require phpunit/phpunit --optimize-autoloader
Bcomposer require phpunit/phpunit --update-no-dev
Ccomposer require phpunit/phpunit --no-dev
Dcomposer require phpunit/phpunit --dev
Attempts:
2 left
💡 Hint

Think about the flag that marks a package as development-only.

Practice

(1/5)
1. What does the composer require command do in a PHP project?
easy
A. It adds a new package to composer.json and installs it.
B. It removes a package from the project.
C. It updates PHP to the latest version.
D. It creates a new PHP project from scratch.

Solution

  1. Step 1: Understand the purpose of composer require

    This command adds a new package to the composer.json file and downloads the package files into the project.
  2. Step 2: Compare with other options

    Removing packages is done with composer remove, updating PHP is unrelated, and creating projects uses other tools.
  3. Final Answer:

    It adds a new package to composer.json and installs it. -> Option A
  4. Quick Check:

    composer require = add and install package [OK]
Hint: Remember: require means add and install package [OK]
Common Mistakes:
  • Confusing require with remove command
  • Thinking it updates PHP version
  • Assuming it creates new projects
2. Which of the following is the correct syntax to add the package monolog/monolog using Composer?
easy
A. composer install monolog/monolog
B. composer add monolog/monolog
C. composer require monolog/monolog
D. composer update monolog/monolog

Solution

  1. Step 1: Recall Composer commands for adding packages

    The correct command to add a package is composer require <package-name>.
  2. Step 2: Check other commands

    composer add is invalid, install installs all dependencies, and update updates existing packages.
  3. Final Answer:

    composer require monolog/monolog -> Option C
  4. Quick Check:

    Require = add package [OK]
Hint: Use 'composer require' to add packages, not 'add' or 'install' [OK]
Common Mistakes:
  • Using 'composer add' instead of 'require'
  • Confusing 'install' with adding packages
  • Trying to update instead of add
3. Given the command composer require guzzlehttp/guzzle:^7.0, what will happen?
medium
A. Composer installs any version of guzzlehttp/guzzle.
B. Composer installs version 7.0 or higher but less than 8.0 of guzzlehttp/guzzle.
C. Composer installs exactly version 7.0 of guzzlehttp/guzzle.
D. Composer installs the latest version ignoring the version constraint.

Solution

  1. Step 1: Understand version constraints in Composer

    The caret (^) means compatible versions starting from 7.0 up to but not including 8.0.
  2. Step 2: Analyze the command effect

    Composer will install the latest version that matches ^7.0, so any 7.x version but not 8.x or higher.
  3. Final Answer:

    Composer installs version 7.0 or higher but less than 8.0 of guzzlehttp/guzzle. -> Option B
  4. Quick Check:

    ^7.0 means >=7.0 <8.0 [OK]
Hint: Caret (^) means compatible versions, not exact [OK]
Common Mistakes:
  • Thinking ^7.0 means exactly 7.0
  • Assuming it installs latest ignoring version
  • Confusing caret with tilde (~) version
4. You ran composer require symfony/console but got an error: "Could not find package symfony/console". What is the most likely cause?
medium
A. You misspelled the package name.
B. Composer is not installed on your system.
C. You need to run composer update first.
D. Your PHP version is too new.

Solution

  1. Step 1: Analyze the error message

    The error says the package could not be found, which usually means the package name is incorrect or misspelled.
  2. Step 2: Check other options

    If Composer was not installed, the command wouldn't run at all. Running update first is not required to add a new package. PHP version too new usually causes different errors.
  3. Final Answer:

    You misspelled the package name. -> Option A
  4. Quick Check:

    Package not found = wrong name [OK]
Hint: Check spelling of package name if 'not found' error appears [OK]
Common Mistakes:
  • Assuming Composer is missing
  • Running update unnecessarily
  • Blaming PHP version without checking
5. You want to add a package but only for development (not in production). Which command should you use?
hard
A. composer update --dev phpunit/phpunit
B. composer require phpunit/phpunit
C. composer install --dev phpunit/phpunit
D. composer require --dev phpunit/phpunit

Solution

  1. Step 1: Understand dev dependencies in Composer

    To add a package only for development, use the --dev flag with composer require.
  2. Step 2: Check other commands

    composer install and composer update do not add packages; they manage existing dependencies.
  3. Final Answer:

    composer require --dev phpunit/phpunit -> Option D
  4. Quick Check:

    Use --dev with require to add dev-only packages [OK]
Hint: Add dev packages with 'composer require --dev' [OK]
Common Mistakes:
  • Using require without --dev for dev packages
  • Trying to add packages with install or update
  • Confusing --dev flag usage
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard