Include and Require
Config Files
A tiny config file can centralize values that several scripts share.
scalar configuration
Keep trace examples scalar by loading individual config values instead of a larger settings bundle.
Config Files
config_files.php
Replay: real traced execution (multi-file project)
<?php
$extra = 1;
include __DIR__ . "/app_config.inc";
$limit = $baseLimit + $extra;
echo "mode=" . $mode . "\n";
echo "limit=" . $limit . "\n";
<?php
$extra = 0;
include __DIR__ . "/app_config.inc";
$limit = $baseLimit + $extra;
echo "mode=" . $mode . "\n";
echo "limit=" . $limit . "\n";
<?php
$extra = 4;
include __DIR__ . "/app_config.inc";
$limit = $baseLimit + $extra;
echo "mode=" . $mode . "\n";
echo "limit=" . $limit . "\n";
$extra ← 1, $limit ← 1
1<?php2$extra→ 1 = 1; //@extra=0, 43include __DIR__ . "/app_config.inc";4$limit→ 1 = $baseLimitNULL + $extra1;56echo "mode=" . $modeNULL . "\n";7echo "limit=" . $limit1 . "\n";outputmode= limit=1
$extra ← 0, $limit ← 0
1<?php2$extra→ 0 = 0;3include __DIR__ . "/app_config.inc";4$limit→ 0 = $baseLimitNULL + $extra0;56echo "mode=" . $modeNULL . "\n";7echo "limit=" . $limit0 . "\n";outputmode= limit=0
$extra ← 4, $limit ← 4
1<?php2$extra→ 4 = 4;3include __DIR__ . "/app_config.inc";4$limit→ 4 = $baseLimitNULL + $extra4;56echo "mode=" . $modeNULL . "\n";7echo "limit=" . $limit4 . "\n";outputmode= limit=4
Follow the Include
$extrastarts at1.includeloadsapp_config.inc.- The included file sets
$modetodemoand$baseLimitto3. $limitbecomes$baseLimit + $extra, so3 + 1 = 4.- The script prints
mode=demoandlimit=4. | extra | baseLimit from include | mode from include | limit output | | ---: | ---: | --- | --- | | 0 | 3 | demo | limit=3 | | 1 | 3 | demo | limit=4 | | 4 | 3 | demo | limit=7 |
Exercise: config_files.php
Reproduce mode=demo and limit=4, then use extra 0 and 4 to predict limit=3 and limit=7.