Replay a small response state machine with scalar request and response values.

response state Model a response as scalar state before encoding or sending it in a real application.

Response State Panel

route
response_state_panel.php
Replay: real traced execution (multi-file project)
<?php
$route = "status";
$status = "";
$message = "";

if ($route === "refresh") {
    $status = "ok";
    $message = "cache refreshed";
} elseif ($route === "archive") {
    $status = "queued";
    $message = "archive queued";
} else {
    $status = "ok";
    $message = "service ready";
}

$payload = json_encode(["status" => $status, "message" => $message]);

echo "route=" . $route . "\n";
echo "status=" . $status . "\n";
echo "payload=" . $payload . "\n";
<?php
$route = "refresh";
$status = "";
$message = "";

if ($route === "refresh") {
    $status = "ok";
    $message = "cache refreshed";
} elseif ($route === "archive") {
    $status = "queued";
    $message = "archive queued";
} else {
    $status = "ok";
    $message = "service ready";
}

$payload = json_encode(["status" => $status, "message" => $message]);

echo "route=" . $route . "\n";
echo "status=" . $status . "\n";
echo "payload=" . $payload . "\n";
<?php
$route = "archive";
$status = "";
$message = "";

if ($route === "refresh") {
    $status = "ok";
    $message = "cache refreshed";
} elseif ($route === "archive") {
    $status = "queued";
    $message = "archive queued";
} else {
    $status = "ok";
    $message = "service ready";
}

$payload = json_encode(["status" => $status, "message" => $message]);

echo "route=" . $route . "\n";
echo "status=" . $status . "\n";
echo "payload=" . $payload . "\n";
  1. $route ← status, $status ← (empty), $message ← (empty), $payload ← {"status":"ok","message":"service ready"}

    1<?php2$route→ status = "status"; //@route="refresh", "archive"3$status→ (empty) = "";4$message→ (empty) = "";56if ($route === "refresh") {7    $status = "ok";8    $message = "cache refreshed";9} elseif ($route === "archive") {10    $status = "queued";11    $message = "archive queued";12} else {13    $status→ ok = "ok";14    $message→ service ready = "service ready";15}1617$payload→ {"status":"ok","message":"service ready"} = json_encode(["status" => $statusok, "message" => $messageservice ready]);1819echo "route=" . $routestatus . "\n";20echo "status=" . $statusok . "\n";21echo "payload=" . $payload{"status":"ok","message":"service ready"} . "\n";
    outputroute=status
    status=ok
    payload={"status":"ok","message":"service ready"}
  1. $route ← refresh, $status ← (empty), $message ← (empty)

    1<?php2$route→ refresh = "refresh";3$status→ (empty) = "";4$message→ (empty) = "";
  2. $status ← ok, $message ← cache refreshed

    6if ($routerefresh === "refresh") {7    $status→ ok = "ok";8    $message→ cache refreshed = "cache refreshed";9} elseif ($route === "archive") {
  3. $payload ← {"status":"ok","message":"cache refreshed"}

    17$payload→ {"status":"ok","message":"cache refreshed"} = json_encode(["status" => $statusok, "message" => $messagecache refreshed]);1819echo "route=" . $routerefresh . "\n";20echo "status=" . $statusok . "\n";21echo "payload=" . $payload{"status":"ok","message":"cache refreshed"} . "\n";
    outputroute=refresh
    status=ok
    payload={"status":"ok","message":"cache refreshed"}
  1. $route ← archive, $status ← (empty), $message ← (empty), $payload ← {"status":"queued","message":"archive queued"}

    1<?php2$route→ archive = "archive";3$status→ (empty) = "";4$message→ (empty) = "";56if ($route === "refresh") {7    $status = "ok";8    $message = "cache refreshed";9} elseif ($route === "archive") {10    $status→ queued = "queued";11    $message→ archive queued = "archive queued";12} else {13    $status = "ok";14    $message = "service ready";15}1617$payload→ {"status":"queued","message":"archive queued"} = json_encode(["status" => $statusqueued, "message" => $messagearchive queued]);1819echo "route=" . $routearchive . "\n";20echo "status=" . $statusqueued . "\n";21echo "payload=" . $payload{"status":"queued","message":"archive queued"} . "\n";
    outputroute=archive
    status=queued
    payload={"status":"queued","message":"archive queued"}