<?php
/*
* PHP 5.6 Variadics allow us to pack arguments into arrays from the function prototype!
* Typically you would use a combination of func_get_args and array_slice to grab these
* function arguments from the stack frame, but Variadics make the syntax much nicer.
* The function prototype is easier to read and more clearly signifies that it's a
* Variadic function...
*/
// Pre PHP 5.6 you would do the following ...
function bond($agent) {
$bondingAgents = array_slice(func_get_args(), 1);
$bonding = "";
foreach ($bondingAgents as $bond) {
$bonding .= "$agent-$bond\n";
}
return $bonding;
}
// With PHp 5.6 you cna do this instead ...
function newBond($agent, ...$bondingAgents) {
$bonding = "";
foreach($bondingAgents as $bond) {
$bonding .= "$agent-$bond\n";
}
return $bonding;
}
header('Content-type: text/plain');
echo "Pre-5.6 Result...\n\n";
echo bond("Hydrogen", "Oxide", "Peroxide", "Dioxide");
echo "5.6 Result...\n\n";
echo newBond("Hydrogen", "Oxide", "Peroxide", "Dioxide");