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 <[email protected]> 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