Workflow and Source Panels
Dispatcher Map Panel
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
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";
$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);function handle_status($mode)
1<?php2function handle_status($modestatus) {3 return "handled:" . $modestatus;4}$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
$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);function handle_refresh($mode)
6function handle_refresh($moderefresh) {7 return "cache:" . $moderefresh;8}$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
$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);function handle_archive($mode)
10function handle_archive($modearchive) {11 return "queue:" . $modearchive;12}$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