Superglobals as Concepts
Query Params
$_GET represents values that arrived in the query string.
query string input
Query parameters arrive as text, so programs often convert them before doing arithmetic.
Query Params
query_params.php
Replay: real traced execution (multi-file project)
<?php
$pageInput = "2";
$_GET["page"] = $pageInput;
$pageText = $_GET["page"] ?? "1";
$page = (int)$pageText;
$offset = ($page - 1) * 10;
echo "pageText=" . $pageText . "\n";
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
<?php
$pageInput = "1";
$_GET["page"] = $pageInput;
$pageText = $_GET["page"] ?? "1";
$page = (int)$pageText;
$offset = ($page - 1) * 10;
echo "pageText=" . $pageText . "\n";
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
<?php
$pageInput = "5";
$_GET["page"] = $pageInput;
$pageText = $_GET["page"] ?? "1";
$page = (int)$pageText;
$offset = ($page - 1) * 10;
echo "pageText=" . $pageText . "\n";
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
$pageInput ← 2, $_GET["page"] ← 2, $pageText ← 2, $page ← 2, $offset ← 10
1<?php2$pageInput→ 2 = "2"; //@pageInput="1", "5"3$_GET["page"]→ 2 = $pageInput2;4$pageText→ 2 = $_GET["page"]2 ?? "1";5$page→ 2 = (int)$pageText2;6$offset→ 10 = ($page2 - 1) * 10;78echo "pageText=" . $pageText2 . "\n";9echo "page=" . $page2 . "\n";10echo "offset=" . $offset10 . "\n";outputpageText=2 page=2 offset=10values this stepArray$_GET
$pageInput ← 1, $_GET["page"] ← 1, $pageText ← 1, $page ← 1, $offset ← 0
1<?php2$pageInput→ 1 = "1";3$_GET["page"]→ 1 = $pageInput1;4$pageText→ 1 = $_GET["page"]1 ?? "1";5$page→ 1 = (int)$pageText1;6$offset→ 0 = ($page1 - 1) * 10;78echo "pageText=" . $pageText1 . "\n";9echo "page=" . $page1 . "\n";10echo "offset=" . $offset0 . "\n";outputpageText=1 page=1 offset=0values this stepArray$_GET
$pageInput ← 5, $_GET["page"] ← 5, $pageText ← 5, $page ← 5, $offset ← 40
1<?php2$pageInput→ 5 = "5";3$_GET["page"]→ 5 = $pageInput5;4$pageText→ 5 = $_GET["page"]5 ?? "1";5$page→ 5 = (int)$pageText5;6$offset→ 40 = ($page5 - 1) * 10;78echo "pageText=" . $pageText5 . "\n";9echo "page=" . $page5 . "\n";10echo "offset=" . $offset40 . "\n";outputpageText=5 page=5 offset=40values this stepArray$_GET