Route a command through named PHP handlers while replay shows the selected branch.

dispatcher map Mapping commands to named handlers keeps dynamic routing traceable without closures.

Dispatcher Map Panel

mode
dispatcher_map_panel.php
Replay: real traced execution (multi-file project)
<?php
function handle_status($mode) {
    return "handled:" . $mode;
}

function handle_refresh($mode) {
    return "cache:" . $mode;
}

function handle_archive($mode) {
    return "queue:" . $mode;
}

$mode = "status";
$handlers = [
    "status" => "handle_status",
    "refresh" => "handle_refresh",
    "archive" => "handle_archive"
];

$access = $mode === "archive" ? "review" : "ok";
$handler = $handlers[$mode];
$handled = $handler($mode);

echo "mode=" . $mode . "\n";
echo "access=" . $access . "\n";
echo $handled . "\n";
<?php
function handle_status($mode) {
    return "handled:" . $mode;
}

function handle_refresh($mode) {
    return "cache:" . $mode;
}

function handle_archive($mode) {
    return "queue:" . $mode;
}

$mode = "refresh";
$handlers = [
    "status" => "handle_status",
    "refresh" => "handle_refresh",
    "archive" => "handle_archive"
];

$access = $mode === "archive" ? "review" : "ok";
$handler = $handlers[$mode];
$handled = $handler($mode);

echo "mode=" . $mode . "\n";
echo "access=" . $access . "\n";
echo $handled . "\n";
<?php
function handle_status($mode) {
    return "handled:" . $mode;
}

function handle_refresh($mode) {
    return "cache:" . $mode;
}

function handle_archive($mode) {
    return "queue:" . $mode;
}

$mode = "archive";
$handlers = [
    "status" => "handle_status",
    "refresh" => "handle_refresh",
    "archive" => "handle_archive"
];

$access = $mode === "archive" ? "review" : "ok";
$handler = $handlers[$mode];
$handled = $handler($mode);

echo "mode=" . $mode . "\n";
echo "access=" . $access . "\n";
echo $handled . "\n";
  1. $mode ← status, $handlers ← Array, $access ← ok, $handler ← handle_status

    14$mode→ status = "status"; //@mode="refresh", "archive"15$handlers→ Array = [16    "status" => "handle_status",17    "refresh" => "handle_refresh",18    "archive" => "handle_archive"19];2021$access→ ok = $modestatus === "archive" ? "review" : "ok";22$handler→ handle_status = $handlers[$mode]handle_status;23$handled = $handler($modestatus);
  2. function handle_status($mode)

    1<?php2function handle_status($modestatus) {3    return "handled:" . $modestatus;4}
  3. $handled ← handled:status

    22$handler = $handlers[$mode];23$handled→ handled:status = $handler($modestatus);2425echo "mode=" . $modestatus . "\n";26echo "access=" . $accessok . "\n";27echo $handledhandled:status . "\n";
    outputmode=status
    access=ok
    handled:status
  1. $mode ← refresh, $handlers ← Array, $access ← ok, $handler ← handle_refresh

    14$mode→ refresh = "refresh";15$handlers→ Array = [16    "status" => "handle_status",17    "refresh" => "handle_refresh",18    "archive" => "handle_archive"19];2021$access→ ok = $moderefresh === "archive" ? "review" : "ok";22$handler→ handle_refresh = $handlers[$mode]handle_refresh;23$handled = $handler($moderefresh);
  2. function handle_refresh($mode)

    6function handle_refresh($moderefresh) {7    return "cache:" . $moderefresh;8}
  3. $handled ← cache:refresh

    22$handler = $handlers[$mode];23$handled→ cache:refresh = $handler($moderefresh);2425echo "mode=" . $moderefresh . "\n";26echo "access=" . $accessok . "\n";27echo $handledcache:refresh . "\n";
    outputmode=refresh
    access=ok
    cache:refresh
  1. $mode ← archive, $handlers ← Array, $access ← review, $handler ← handle_archive

    14$mode→ archive = "archive";15$handlers→ Array = [16    "status" => "handle_status",17    "refresh" => "handle_refresh",18    "archive" => "handle_archive"19];2021$access→ review = $modearchive === "archive" ? "review" : "ok";22$handler→ handle_archive = $handlers[$mode]handle_archive;23$handled = $handler($modearchive);
  2. function handle_archive($mode)

    10function handle_archive($modearchive) {11    return "queue:" . $modearchive;12}
  3. $handled ← queue:archive

    22$handler = $handlers[$mode];23$handled→ queue:archive = $handler($modearchive);2425echo "mode=" . $modearchive . "\n";26echo "access=" . $accessreview . "\n";27echo $handledqueue:archive . "\n";
    outputmode=archive
    access=review
    queue:archive