Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:10736 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 23947 invoked by uid 1010); 23 Jun 2004 20:01:56 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 23642 invoked from network); 23 Jun 2004 20:01:52 -0000 Received: from unknown (HELO hyperion-data.net) (204.200.195.9) by pb1.pair.com with SMTP; 23 Jun 2004 20:01:52 -0000 Received: from hyperion-data.net (localhost [127.0.0.1]) by hyperion-data.net (8.12.11/8.12.6) with ESMTP id i5NK1pK0034763; Wed, 23 Jun 2004 20:01:51 GMT (envelope-from daniel@hyperion-data.net) Received: from localhost (daniel@localhost) by hyperion-data.net (8.12.11/8.12.6/Submit) with ESMTP id i5NK1p9W034760; Wed, 23 Jun 2004 20:01:51 GMT (envelope-from daniel@hyperion-data.net) Date: Wed, 23 Jun 2004 20:01:51 +0000 (GMT) To: Bert Slagter cc: internals@lists.php.net In-Reply-To: <20040623163305.73484.qmail@pb1.pair.com> Message-ID: <20040623194751.N22728@hyperion-data.net> References: <20040623150429.E62456@hyperion-data.net> <20040623163305.73484.qmail@pb1.pair.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Subject: Re: [PHP-DEV] Re: keyword arguments? From: daniel@hyperion-data.net (Daniel Crookston) The major benefit of keyword arguments doesn't occur when you're writing functions, it occurs when you're re-writing them. I can't count the number of times where I've thought "My xyz function already does something almost exactly like what I need... if I just passed it an extra parameter, I could rewrite xyz to do what I need and save a lot of time." So I add another parameter, making it optional. This is fine, all the calls to xyz that are lacking the final parameter still work (since it's optional.) But do this once or twice, and pretty soon you have function calls that look like this: xyz('a', 2, $foo, '', '', '', '', '', '', $bar); That's ugly and unnecessary, and leaves lots of room for bugs when you're writing functions that use the nth optional parameter in your function (since you have to count the number of blank spaces you need to leave.) Additionally, what happens when all of your original, three-argument (a, 2, $foo) calls to xyz need to start passing an additional argument because of a change you couldn't predict when you first wrote your function? Keyword arguments solve these problems. They're always optional - not just optional in that you can stick a '' or NULL in the spot where you would put a value in the function call. They're optional in that you can leave them out entirely. Because they're named, they can also be passed in any order. And, finally, you can add new keyword arguments at any time, and none of your current function calls will break. If there's a way to do this in PHP (short of having the last argument be a hash) that I've missed, please let me know about it. Daniel Cr On Wed, 23 Jun 2004, Bert Slagter wrote: > Even after reading your message twice, I can't think of an example where this > would be useful. Obviously, I don't understand your intention. > > Could you give an example of a construction that is made possible by this > feature (and thus would otherwise be impossible)? > > Bert