Command-line applications can be useful for tasks such as automation, data processing, and system monitoring. By the end of this tutorial, you will have a foundational understanding of how to create and run a PHP command-line application.

Setting Up Your Environment

Before we start coding, ensure that you have PHP installed on your system. You can verify your installation by running the following command in your terminal:

php -v

If PHP is installed correctly, you will see the version information. If not, please install PHP from the official PHP website.

Creating Your First Command-Line Application

  1. Create a New PHP File

Start by creating a new PHP file. You can name it hello.php:

   touch hello.php
  1. Write Your PHP Code

Open hello.php in your preferred text editor and add the following code:

   <?php
   // hello.php
   // A simple command-line application that greets the user

   // Check if a name is provided as an argument
   if ($argc > 1) {
       $name = $argv[1];
       echo "Hello, " . htmlspecialchars($name) . "!\n";
   } else {
       echo "Hello, World!\n";
   }
   ?>

In this code:

  • $argc represents the number of arguments passed to the script.
  • $argv is an array containing the arguments. The first element is always the script name.
  1. Running Your Application

You can run your application from the terminal. Navigate to the directory where hello.php is located and execute the following command:

   php hello.php

This will output:

   Hello, World!

If you provide a name as an argument:

   php hello.php John

The output will be:

   Hello, John!

Handling User Input

To create more interactive command-line applications, you can prompt the user for input. Here’s how to modify the previous example to ask for the user's name:

<?php
// hello_interactive.php
// A command-line application that greets the user interactively

echo "What is your name? ";
$name = trim(fgets(STDIN)); // Read input from the user
echo "Hello, " . htmlspecialchars($name) . "!\n";
?>

In this code:

  • fgets(STDIN) reads a line of input from the standard input (the terminal).
  • trim() is used to remove any whitespace from the beginning and end of the input.

Processing Command-Line Arguments

Command-line applications often require parsing various arguments. You can use the getopt() function to handle options and flags more elegantly. Here’s an example:

<?php
// options.php
// A command-line application that processes options

$options = getopt("n:"); // Expecting a name option (-n)

if (isset($options['n'])) {
    $name = $options['n'];
    echo "Hello, " . htmlspecialchars($name) . "!\n";
} else {
    echo "Usage: php options.php -n [name]\n";
}
?>

You can run this script with:

php options.php -n John

The output will be:

Hello, John!

If you run it without the -n option, it will display the usage instructions.

Best Practices for Command-Line Applications

When developing command-line applications in PHP, consider the following best practices:

Best PracticeDescription
Input ValidationAlways validate user input to avoid unexpected behavior.
Error HandlingUse try-catch blocks to handle exceptions gracefully.
Clear Usage InstructionsProvide clear instructions on how to use the application.
LoggingImplement logging for debugging and monitoring purposes.
Modular CodeKeep your code modular by using functions or classes.

Conclusion

In this tutorial, you learned how to create a simple command-line application in PHP. You explored handling user input, processing command-line arguments, and applying best practices for building robust applications. Command-line applications can be a powerful addition to your PHP toolkit, enabling you to automate tasks and improve your development workflow.

Learn more with useful resources: