Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:16580 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 89485 invoked by uid 1010); 9 Jun 2005 13:33:10 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 89464 invoked from network); 9 Jun 2005 13:33:10 -0000 Received: from unknown (HELO pb1.pair.com) (127.0.0.1) by localhost with SMTP; 9 Jun 2005 13:33:10 -0000 X-Host-Fingerprint: 80.126.99.118 procurios.xs4all.nl Received: from ([80.126.99.118:5483] helo=localhost.localdomain) by pb1.pair.com (ecelerity 1.2 r(5656M)) with SMTP id A7/02-21296-51548A24 for ; Thu, 09 Jun 2005 09:33:09 -0400 Message-ID: To: internals@lists.php.net Date: Thu, 09 Jun 2005 15:33:07 +0200 User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-Accept-Language: en-us, en MIME-Version: 1.0 References: <14.77.21296.CE1E7A24@pb1.pair.com> In-Reply-To: <14.77.21296.CE1E7A24@pb1.pair.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Posted-By: 80.126.99.118 Subject: Re: ifsetor(), goto, 5.x, my two cents From: taco@procurios.nl (Taco van den Broek) It will be difficult to define the check for such a coalesce function that everybody agrees on. Personnally I like the !empty test, but would want it to check on != 0 too. Most probably my favourite check would be something like: !empty($foo) || (string)$foo !== '' Someone else might want this function to check only with is_null or isset or any combination of is_null, isset, empty and (string)$foo !== ''. I do hope this kind of functionallity is added to PHP at some time but I'm pretty sceptical about the way such a function would behave. Ron Korving wrote: > I must say, I like the coalesce() idea a lot. It gives more flexibility over > ifsetor() which sounds to me like it only handles 1 variable that is or > isn't set. coalesce() would handle any number of variables. > > Here's something else to consider though: > > Would anybody be interested in a parameter for ifsetor() or coalesce() that > would use !empty() instead of isset() ? If coalesce() would become the > function name of choice, you can't drop in a parameter to achieve what I > just said, so an alternative function would be better in that case (or maybe > it would be better in any case). I know I'd love to see some variant like > this. I use empty() a lot more than isset(). > > Ron > > > "Noah Botimer" wrote in message > news:ECDCEE8D-2160-46B7-BF84-AB163E477707@botimer.net... > >>Hello all, >> >>Now that my PHP-DEV imap folder has cooled off a bit, I'd like to >>chime in briefly on ifsetor() and goto. >> >>As far as ifsetor() goes, I like the concept. I would, however, >>suggest a specific behavior and a name change. I do a lot of >>database code and use things like ISNULL() and COALESCE() to >>translate NULL values to 0's, placeholder strings, etc. ISNULL() >>typically provides a check of one value, and acts just as a ternary >>operation: >> >>value = check ? check : alternative; >> >>while COALESCE() usually returns the first non-null parameter, or >>NULL if all are parameters are NULL. >> >>Since PHP already supports arbitrary/optional parameters natively, I >>think a single coalesce() function would be a very reasonable >>extension that would behave in an understandable and desirable manner >>(with a name that matches at least some common usage). >> >>As for goto, we may be fighting over nothing. There is a lot of >>abuse that may be done with goto, as has been illustrated but, with a >>couple of sensible limitations, the horrific problems should be >>averted. It also seems to me that GOTO is far less often mentioned >>to beginners as a means of flow control since line-numbered BASIC has >>faded. People who get into trouble with it will likely have a good >>reason to be playing with fire. I say: put it in, label it >>dangerous, and let the developers decide if it's right for them. >> >>Thanks, >>-Noah Botimer