PHP › PHP CLI Scripting

How do PHP frameworks like Laravel's Artisan or Symfony's Console component let you build well structured, reusable custom command line commands?

Intermediate

Answer

Rather than writing standalone command line scripts from scratch, frameworks like Laravel and Symfony provide a structured console component that lets you define a custom command as a proper class, complete with built in support for arguments, options, formatted output, and progress bars, integrating that command directly into the framework's existing service container and configuration, letting your command line tools benefit from the same dependency injection and code organization as the rest of your application.
class SendNewsletterCommand extends Command {
    protected $signature = 'newsletter:send {--dry-run}';
    public function handle() {
        $this->info('Sending newsletter...');
    }
}
Real-world example A Laravel application defines a custom Artisan command for sending a scheduled newsletter, taking advantage of the framework's existing email service and database models directly within the command, rather than duplicating that setup in a standalone script.

Common follow-ups: How do you register a custom command so it becomes available through Artisan or the Symfony console?;What built in features does a framework's console component typically provide beyond basic argument parsing?