It's true that you can already do something similar -- although not as easily. 
I personally always use this pattern:

function stuff($required1, $required2, $options = array()) {
   extract($options);
}

This still, however, makes everyone who call my functions have to do a lot of 
extra typing:

stuff(1, 2, array('a' => 'b')) // well, not a lot but they have to type array(  
  ) EVERY TIME

instead, wouldn't it be nice if
a) Every function ever written could become extensible
b) People would be able to use that really easily: stuff(1, 2, 'a' => 'b', $c 
=> $d)?

PS: Please let's NOT make it stuff(1, 2, a => 'b', c => $d) as it would take 
away the option of having variable key names, which we can have in array(). 
Also it would create slight ambiguity with constants.

On Oct 15, 2010, at 1:27 PM, Michael Shadle wrote:

> On Fri, Oct 15, 2010 at 10:26 AM, G M <greg...@gregory.net> wrote:
>> Okay so I am thinking about submitting a patch to PHP that would enable you 
>> to call functions like this:
>> 
>> stuff(1, 2, 'separator' => '<br>', 'clean' => true);
> 
> I don't like having the never ending growing list of arguments issue,
> but I just use
> 
> function foo($args = array()) {
> 
> # first pass to normalize, check, scrub data
> 
> $bar = isset($args['whatever']) ? intval($args['whatever']) : 0;
> 
> # second pass to do sanity checking or business logic...
> 
> if($bar > 0) {
>   ...
> }
> 
> }
> 
> Looks like Drupal 7 is taking this approach with some things too.
> 
> I am not sure the language itself needs anything to change, it can be
> done today and seems like an additional feature to shortcut something
> already available.


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to