Functions and Scope
Function Parameters
Parameters let a function receive values from the call site.
parameter
A parameter is a local name that receives an argument value when the function is called.
Function Parameters
function_parameters.php
Replay: real traced execution (multi-file project)
<?php
function badge(string $name, int $level): string {
return $name . ":" . $level;
}
$level = 2;
$label = badge("Mia", $level);
echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
<?php
function badge(string $name, int $level): string {
return $name . ":" . $level;
}
$level = 1;
$label = badge("Mia", $level);
echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
<?php
function badge(string $name, int $level): string {
return $name . ":" . $level;
}
$level = 4;
$label = badge("Mia", $level);
echo "level=" . $level . "\n";
echo "label=" . $label . "\n";
$level ← 2
6$level→ 2 = 2; //@level=1, 47$label = badge("Mia", $level2);function badge(string $name, int $level): string
1<?php2function badge(string $nameMia, int $level2): string {3 return $nameMia . ":" . $level2;4}$label ← Mia:2
6$level = 2; //@level=1, 47$label→ Mia:2 = badge("Mia", $level2);89echo "level=" . $level2 . "\n";10echo "label=" . $labelMia:2 . "\n";outputlevel=2 label=Mia:2
$level ← 1
6$level→ 1 = 1;7$label = badge("Mia", $level1);function badge(string $name, int $level): string
1<?php2function badge(string $nameMia, int $level1): string {3 return $nameMia . ":" . $level1;4}$label ← Mia:1
6$level = 1;7$label→ Mia:1 = badge("Mia", $level1);89echo "level=" . $level1 . "\n";10echo "label=" . $labelMia:1 . "\n";outputlevel=1 label=Mia:1
$level ← 4
6$level→ 4 = 4;7$label = badge("Mia", $level4);function badge(string $name, int $level): string
1<?php2function badge(string $nameMia, int $level4): string {3 return $nameMia . ":" . $level4;4}$label ← Mia:4
6$level = 4;7$label→ Mia:4 = badge("Mia", $level4);89echo "level=" . $level4 . "\n";10echo "label=" . $labelMia:4 . "\n";outputlevel=4 label=Mia:4
Follow the Parameters
levelstarts as2.- The call passes
"Mia"as the name. - It passes
2as the level. badgejoins the name, a colon, and the level.- The script prints
level=2andlabel=Mia:2. | argument | parameter | value in label | | --- | --- | --- | |"Mia"|$name| Mia | |2|$level| 2 | | result | - | Mia:2 |
Exercise: function_parameters.php
Reproduce level=2 and label=Mia:2, then use the pinned level variants 1 and 4 to predict label=Mia:1 and label=Mia:4.