You could use an associative array, but then you have a not-so-clean syntax 
and you have to handle default values for missing parameters yourself.

Named parameter example:

<?php
  function adduser(username: $username, password: $password, superuser: 
$superuser=false)
  {
    // now do some stuff with $username, $password and $superuser
  }

  adduser('root', 'abcdefg', true);
  // or:
  adduser(username: 'root', password: 'abcdefg', superuser: true);
?>

Traditional named example:

<?php
  function adduser($params)
  {
    if (!is_array($params)) throw new Exception('No named parameters');
    if (!isset($params['username'])) throw new Exception('Missing parameter: 
username');
    if (!isset($params['password'])) throw new Exception('Missing parameter: 
username');
    if (!isset($params['superuser'])) $params['superuser'] = false;

    // now do some stuff with $params
  }

  adduser(array('username' => 'root', 'password' => 'abcdefg', 'superuser' 
=> true));
?>

You see the big advantages of named parameters?
- clean syntax
- no array handling inside the function or method
- no checking on the existance or non-existance of parameters
- no forcing default values for missing parameters
- when you need to skip a parameter, you no longer have to give it's default 
value when calling the function, you can simply skip the whole parameter:

  function foo(bar: $bar=0, bla: $bla='test', cow: $moo='moooo');

call:
  foo(cow: 'test');
  foo(0, 'test', 'test');


Named parameters would kick serious butt :)

- Ron



"Bart de Boer" <[EMAIL PROTECTED]> schreef in bericht 
news:[EMAIL PROTECTED]
> Hi Jared,
>
> If probably don't understand named arguments correclty but couldn't you do 
> something like:
>
> function(array('name1' => 'val1', 'name2' => $var));
>
> In the function you could then check which keys (names) have values, 
> thereby simulating a form of named agruments?
>
>
>
>> On Nov 29, 2005, at 11:17 PM, Jared White wrote:
>>
>>> Named arguments are absolutely essential for using PHP as a solid 
>>> templating language, and, in fact, they also greatly enhance code 
>>> readability for complex method calls of in-depth APIs. My experience 
>>> with both Objective-C and Python has showed me the wonders and joys of 
>>> named arguments, and it is something I've desperately wanted in PHP for 
>>> ages. I'm sure I'm not alone in this. I've tried array constructs, 
>>> multiple arguments with string-based names and fancy parsing using 
>>> func_get_args(), and various combinations thereof, and nothing is a good 
>>> substitute for the real deal. 

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

Reply via email to