[UPHPU] pass variables into a function
Kevin Carter
email.bdr at gmail.com
Sat Jan 10 21:25:35 MST 2009
function do_something_awesome($params = array()) {
$default = array(
'a' => 'a',
'b' => 'b',
);
$params = array_merge($default, $params);
....
}
Lamont Peterson wrote:
> On Saturday 10 January 2009 08:14:20 am Walt Haas wrote:
>> The usual approach would be to write
>>
>> function do_something_awesome( $params = array() )
>> {
>> if ( array_key_exists( 'a', $params ) ) {
>> $param_a = $params( 'a' );
>> } else {
>> $param_a = 'a';
>> }
>> if ( array_key_exists( 'b', $params ) ) {
>> $param_b = $params( 'b' );
>> } else {
>> $param_b = 'b';
>> }
>> }
>>
>> Then you can write calls like
>>
>> do_something_awesome( );
>> do_something_awesome( array( 'a' => 'foo' ) );
>> do_something_awesome( array( 'b' => 'bar' ) );
>> do_something_awesome( array( 'a' => 'foo', 'b' => 'bar' ) );
>
> Here's a variation on Walt's approach:
>
> function do_something_awesome ($parameters = array ())
> {
> $default_parameters = array (
> 'a' => 'a',
> 'b' => 'b');
> foreach ($parameters as $parameter => $value)
> {
> $default_parameters[$parameter] = $value;
> }
> $parameters = $default_parameters;
> unset ($default_parameters;
>
> // Do awesome stuff.
> }
>
> I'll you figure out why I wrote this example to loop through the passed in
> parameters instead of the defaults :) .
>
> Another thing you could do is to create a process_passed_parameters_array ()
> function. Basically, take the foreach loop, put it in the function and have
> it take the list of defaults and the parameters that were passed in:
>
> function process_passed_parameters_array ($defaults, $parameters)
> {
> foreach ($parameters as $parameter => $value)
> {
> if (array_key_exists ($parameter, $defaults)
> {
> $defaults[$parameter] = $value;
> }
> else
> {
> // We don't want to allow parameters that are
> // not in the defaults list. You could extend
> // this code to throw an exception, if preferred.
> }
> }
> return $defaults;
> }
>
> Then, you can call it:
>
> function do_something_awesome ($parameters = array ())
> {
> $parameters = process_passed_parameters_array (array ('a' => 'a', 'b'
> => 'b', 'c' => ''), $parameters)
>
> // Do awesome stuff.
> }
>
> This could easily be extended to require some parameters.
>
> Still, I also like the func_num_args () approach for some situations.
>
>
> ------------------------------------------------------------------------
>
>
> _______________________________________________
>
> UPHPU mailing list
> UPHPU at uphpu.org
> http://uphpu.org/mailman/listinfo/uphpu
> IRC: #uphpu on irc.freenode.net
More information about the UPHPU
mailing list