Choose an action from a command name.

subcommand-dispatch A command-line tool can route a subcommand to a specific action. The example uses local fixture data instead of real process arguments.

Subcommand Dispatch

command
subcommand_dispatch.php
Replay: real traced execution (multi-file project)
<?php
$command = "build";
$action = "compile";

if ($command === "test") {
    $action = "verify";
} elseif ($command === "deploy") {
    $action = "publish";
}

echo "command=" . $command . "\n";
echo "action=" . $action . "\n";
<?php
$command = "test";
$action = "compile";

if ($command === "test") {
    $action = "verify";
} elseif ($command === "deploy") {
    $action = "publish";
}

echo "command=" . $command . "\n";
echo "action=" . $action . "\n";
<?php
$command = "deploy";
$action = "compile";

if ($command === "test") {
    $action = "verify";
} elseif ($command === "deploy") {
    $action = "publish";
}

echo "command=" . $command . "\n";
echo "action=" . $action . "\n";
  1. $command ← build, $action ← compile

    1<?php2$command→ build = "build"; //@command="test", "deploy"3$action→ compile = "compile";45if ($command === "test") {6    $action = "verify";7} elseif ($command === "deploy") {8    $action = "publish";9}1011echo "command=" . $commandbuild . "\n";12echo "action=" . $actioncompile . "\n";
    outputcommand=build
    action=compile
  1. $command ← test, $action ← compile

    1<?php2$command→ test = "test";3$action→ compile = "compile";
  2. $action ← verify

    5if ($commandtest === "test") {6    $action→ verify = "verify";7} elseif ($command === "deploy") {
  3. echo "command=" . $command . " ";

    11echo "command=" . $commandtest . "\n";12echo "action=" . $actionverify . "\n";
    outputcommand=test
    action=verify
  1. $command ← deploy, $action ← compile

    1<?php2$command→ deploy = "deploy";3$action→ compile = "compile";45if ($command === "test") {6    $action = "verify";7} elseif ($command === "deploy") {8    $action→ publish = "publish";9}1011echo "command=" . $commanddeploy . "\n";12echo "action=" . $actionpublish . "\n";
    outputcommand=deploy
    action=publish