Practical Web Data Patterns
Query Defaults
Choose a safe default for a query value.
query-defaults
Web handlers often read optional query data. Static lessons can model the query value with local scalar data instead of reading a real request.
Query Defaults
query_defaults.php
Replay: real traced execution (multi-file project)
<?php
$page = 1;
$pageSize = 10;
$offset = ($page - 1) * $pageSize;
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
<?php
$page = 2;
$pageSize = 10;
$offset = ($page - 1) * $pageSize;
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
<?php
$page = 5;
$pageSize = 10;
$offset = ($page - 1) * $pageSize;
echo "page=" . $page . "\n";
echo "offset=" . $offset . "\n";
$page ← 1, $pageSize ← 10, $offset ← 0
1<?php2$page→ 1 = 1; //@page=2, 53$pageSize→ 10 = 10;4$offset→ 0 = ($page1 - 1) * $pageSize10;56echo "page=" . $page1 . "\n";7echo "offset=" . $offset0 . "\n";outputpage=1 offset=0
$page ← 2, $pageSize ← 10, $offset ← 10
1<?php2$page→ 2 = 2;3$pageSize→ 10 = 10;4$offset→ 10 = ($page2 - 1) * $pageSize10;56echo "page=" . $page2 . "\n";7echo "offset=" . $offset10 . "\n";outputpage=2 offset=10
$page ← 5, $pageSize ← 10, $offset ← 40
1<?php2$page→ 5 = 5;3$pageSize→ 10 = 10;4$offset→ 40 = ($page5 - 1) * $pageSize10;56echo "page=" . $page5 . "\n";7echo "offset=" . $offset40 . "\n";outputpage=5 offset=40