Edit report at http://bugs.php.net/bug.php?id=12712&edit=1

 ID:                 12712
 Comment by:         briank at kappacs dot com
 Reported by:        martin at semester dot sk
 Summary:            named function parameters
 Status:             Open
 Type:               Feature/Change Request
 Package:            Scripting Engine problem
 Operating System:   *
 PHP Version:        *
 Block user comment: N
 Private report:     N

 New Comment:

I would like to suggest the following syntax:



function f ($un1, $un2, $un3 = 'default',

 'hello' => 'goodbye', 'planet' => 'earth') {

    # $_FUNCARGS is a magic local short-hand for func_get_args()

    var_dump($_FUNCARGS);

}



When called as:



f('one', 'named' => 'param', 'two', 5 => 'works', 'hello' => 'world',
'too');



... the equivalent of this would happen behind the scenes:



# (The order and position of the *named* parameters here are just

# an example and not necessarily what PHP might implement)

$_FUNCARGS = array(0 => 'one', 1 => 'two', 2 => 'default', 5 =>
'works',

 6 => 'too', 'named' => 'param', 'hello' => 'world', 'planet' =>
'earth');

$un1 = &$_FUNCARGS[0];

$un2 = &$_FUNCARGS[1];

$un3 = &$_FUNCARGS[2];



The bottom line is that the parameters look like an array(), with

both numeric and string keys, in any order, just like an array.



For readability, developers should probably put the unnamed parameters

before the named parameters just as a matter of style (for both
function

calls and declarations), but the PHP engine should take them as they
come.


Previous Comments:
------------------------------------------------------------------------
[2010-12-13 18:18:40] giecrilj at stegny dot 2a dot pl

There is no need to change the function declaration.  

Consider this syntax:

  printhello (bold => true, name => 'Martin');

and let the compiler translate it to 

  printhello ('Martin', true)

given the traditional declaration.

------------------------------------------------------------------------
[2008-08-27 08:37:51] coder at muctr dot edu dot ru

Would like to add the reason.

In medium to big projects (when many developers are involved) this
feature could be of a great help. Because the code could be written in
self-documenting manner.



E.g. compare

  $html = formatSomeData( $data, true, false, true, 10 );

to

  $html = formatSomeData( entity_x: $data, italic: true, bold: false,
monospace: true, fontSize: 10 );



In the second case one doesn't have to search for formatSomeData()
definition to start using it.

------------------------------------------------------------------------
[2001-08-13 04:05:59] martin at semester dot sk

Good day. It is not a really bug report but a little suggestion for new
PHP relase. I'll be good thing to add to PHP

language ability to create functions with named parameters like in
Visual Basic. For example:



//Classic function:

function printhello($name, $bold = false, $italic = false)

{

        $ret = "Hello $name!"

        if ($bold)

                $ret = "<strong>$ret</strong>";

        if ($italic)

                $ret = "<em>$ret</em>";

        echo $ret;

}



//Suggested function:

function printhello(name: $name, fat: $bold = false, emphased: $italic =
false)

{

        // same body as above ...

}



This new function could be called like: printhello("Martin", true);

or like new: printhello(fat: true, name: "Martin");



Thank you.

------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=12712&edit=1

Reply via email to