A Symfony Console Command encapsulates one operation with configured arguments and execute() logic.
What It Does and When to Use It
Inspect an individual command and its arguments. CLI commands consume arguments, communicate via STDOUT/STDERR, and return process exit codes; web handlers use HTTP status codes.
Requirements, Inputs and Expected Behavior
Confirm the runtime, extension, environment variables, and permissions before running the examples in production. Return Command::SUCCESS or FAILURE and validate destructive options before doing work.
Example 1: Basic Operation
Inspect an individual command and its arguments.
composer require symfony/console
php bin/console app:cleanup --help
Example 2: Behavior and Validation
Validate a command argument and return a stable exit code.
<?php
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
final class CleanupCommand extends Command {
protected function configure(): void { $this->setName('app:cleanup')->addArgument('days',InputArgument::REQUIRED); }
protected function execute(InputInterface $input,OutputInterface $output): int { $days=filter_var($input->getArgument('days'),FILTER_VALIDATE_INT); if ($days===false||$days<1) return Command::INVALID; $output->writeln('Cleaning older than '.$days.' days'); return Command::SUCCESS; }
}
Practical Example: Application Use
Register and execute the self-contained command with Symfony Console.
<?php
$application=new Symfony\Component\Console\Application('Maintenance');
$application->add(new CleanupCommand());
exit($application->run());
Important Behavior and Edge Cases
The second example highlights: Validate a command argument and return a stable exit code. The practical example adds: Register and execute the self-contained command with Symfony Console.
Comparison with Related Approaches
| Approach | What changes |
|---|---|
| CLI script versus web request | CLI commands consume arguments, communicate via STDOUT/STDERR, and return process exit codes; web handlers use HTTP status codes. |
| Choosing safely | Avoid assuming $_SERVER has the same keys in both SAPIs. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Assuming successful execution proves the result is usable | Check the return value, required extension, and observable output of the specific operation. |
| Ignoring runtime and environment differences | Verify PHP version, SAPI, operating system, service access, and permissions before deployment. |
| Skipping operational constraints | Return Command::SUCCESS or FAILURE and validate destructive options before doing work. |
Key Takeaways
- A Symfony Console Command encapsulates one operation with configured arguments and execute() logic.
- Register and execute the self-contained command with Symfony Console.
- Avoid assuming $_SERVER has the same keys in both SAPIs.