<?php 
require_once('./src/namedArgs.php'); 
require_once('./src/namedArgsHelper.php'); 
 
 
function codeWithoutRef(NamedArgs $mandatory) 
{ 
    $required = ['first', 'fourth']; //specify required parameters here 
    $default = ['first'=>0, 'second'=>1, 'third'=>2, 'fourth'=>9, 'fifth'=>7]; //define all parameters required and optional with their default values here 
    extract($mandatory->getParams($required, $default)); 
    unset($mandatory); 
    return $first + $second + $third + $fourth + $fifth; 
} 
 
 
function codeWithRef(NamedArgs $mandatory) 
{ 
    $required = ['first']; 
    $default = ['first'=>0, 'second'=>1, 'third'=>2]; 
    extract($mandatory->getParams($required, $default), EXTR_OVERWRITE | EXTR_REFS); 
    unset($mandatory); 
    $first = $first + $second + $third; 
} 
 
 
function test(&$tada, &$tada2, &$test = 6) 
{ 
    $tada = 1; 
    $tada2 = 2; 
    return  $tada + $tada2 + $test; 
} 
 
 
echo "<pre>"; 
var_dump(codeWithoutRef(Args(['fourth'=>9, 'first'=>3, 'third'=>79]))); 
var_dump(codeWithoutRef(Args([1, 2, 3, 0]))); 
 
 
$first = 3; 
codeWithRef(Args(['third'=>79, 'first'=>&$first])); 
var_dump($first); 
$first2 = 3; 
codeWithRef(Args([&$first2, 79])); 
var_dump($first2); 
 
$tada = $tada2 = null; 
var_dump(NamedArgs::test(args(['tada'=>&$tada, 'tada2'=>&$tada2])), $tada, $tada2); 
 
$tada = $tada2 = null; 
var_dump(NamedArgs::test(args([&$tada, &$tada2])), $tada, $tada2); 
 
 
NamedArgs::preg_match_all(args(['subpatterns'=>&$matches, 'pattern'=>'#a|o|i|u|e#', 'subject'=>'gris|gros|gras|grue'])); 
 
var_dump($matches); 
var_dump($x = NamedArgs::strtoupper(args(['str'=>'gris|gros|gras|grue'])), NamedArgs::strtolower(args(['str'=>$x]))); //just for  funny example. 
NamedArgs::preg_match(['subpatterns'=>&$match, 'pattern'=>'#a|o|i|u|e#', 'subject'=>'gris|gros|gras|grue']); 
var_dump($match); 
 
highlight_string(' 
<?php  
var_dump(codeWithoutRef(Args([\'third\'=>79])));//generate error here for example 
?> 
'); 
var_dump(codeWithoutRef(Args(['third'=>79]))); 
 
echo "</pre>"; 
 
 |