Re: How can I use a function's default arguments but change one of the end ones in the list?
| From: | Daniel Brown | Date: | Fri, 06 Feb 2009 01:37:00 +0000 |
| Subject: | Re: How can I use a function's default arguments but change one of the end ones in the list? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-287786@lists.php.net to get a copy of this message | ||
On Thu, Feb 5, 2009 at 20:10, German Geek <geek.de@gmail.com> wrote:
> I've thought about this problem before but couldn't think of a solution
> either. How does func_get_args() solve this? You could make a wrapper
> function without that.
It's all in how it's used. Ironically, I don't remember saying
that you couldn't make a wrapper function without it, or that it was
required to make a wrapper. Thanks for clarifying that for everyone
just in case. ;-P
> How would u (php) know which parameter u mean in a particular case?
You don't have to. You can send NULL or empty strings for that
matter, and use the parameter position in func_get_args() that way.
Or using hierarchy and preference:
<?php
if(func_num_args() == '2') {
$first_param = func_get_args(1);
$second_param = 'default_value';
$third_param = func_get_args(2);
$fourth_param = 'another default here';
}
?>
Though inelegant, it works.
What would probably be better, though, would be to write the
wrapper as I mentioned, but have it accept a single parameter as an
array, like so:
<?php
function wrapper_func($arr) {
// Define variable defaults
$param_one = null;
$param_two = 'apple';
$param_three = 'foo';
$param_four = 123.45;
// Redefine variables with values passed to __FUNCTION__
foreach($arr as $k => $v) {
$$k = $v;
}
// Call original function with these values and pass through the results.
return orig_func($param_one,$param_two,$param_three,$param_four);
}
// Then use it like so:
$params = array(
'param_two' => 'Orange',
'param_four' => 543.21,
);
?>
If all orig_func() did was a simple foreach()/echo routine, it
wrapper_func() would print:
[NULL]
Orange
foo
543.21
> I think it would just be useful to have an IDE that can write out the
> default parameters on a keyboard shortcut or mouse click and then u can
> change them afterwards.
It would be nice.... if every programmer touching the code had the
same IDE. Unfortunately, it's just not practical.
--
</Daniel P. Brown>
daniel.brown@parasane.net || danbrown@php.net
http://www.parasane.net/ || http://www.pilotpig.net/
Unadvertised dedicated server deals, too low to print - email me to find out!