Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:16646 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 29870 invoked by uid 1010); 14 Jun 2005 01:45:12 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 29854 invoked from network); 14 Jun 2005 01:45:12 -0000 Received: from unknown (HELO ionzoft.com) (127.0.0.1) by localhost with SMTP; 14 Jun 2005 01:45:12 -0000 X-Host-Fingerprint: 65.61.155.223 unknown Linux 2.4/2.6 Received: from ([65.61.155.223:36418] helo=helium.ionzoft.com) by pb1.pair.com (ecelerity 1.2 r(5656M)) with SMTP id 1C/64-20931-6A63EA24 for ; Mon, 13 Jun 2005 21:45:10 -0400 Received: from JASONGARBER2 (static-207-68-114-163.alt.east.verizon.net [207.68.114.163]) by helium.ionzoft.com (Postfix) with ESMTP id 440258A407C; Mon, 13 Jun 2005 21:45:15 -0400 (EDT) Date: Mon, 13 Jun 2005 21:44:58 -0400 X-Mailer: The Bat! (v3.5.25) Professional Reply-To: Jason Garber Organization: IonZoft, Inc. X-Priority: 3 (Normal) Message-ID: <87728790.20050613214458@ionzoft.com> To: Noah Botimer CC: internals@lists.php.net In-Reply-To: <53F92510-14F5-4E4E-939F-8FC382A7B925@botimer.net> References: <5.1.0.14.2.20050603203711.028e9140@localhost> <200506051859.53976.magnus@php.net> <6E.27.21296.C90E7A24@pb1.pair.com> <38.CE.21296.BFD78A24@pb1.pair.com> <43.34.20931.17BEDA24@pb1.pair.com> <1118701987.27553.6.camel@blobule.suds> <53F92510-14F5-4E4E-939F-8FC382A7B925@botimer.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] PHP 5.1 From: jason@ionzoft.com (Jason Garber) Hello Noah, In general, the people who advocate writing this construct differently, are missing the point. ifsetor is NOT input filtering, it is not a complex, general purpose do-everything construct, it is a simple replacement for $x = (isset($ANY_var) ? $ANY_var : 'Default Value'); $x = ifsetor($ANY_var, 'Default Value'); It needs to be fast, and simple. Using @ is not acceptable, because it still entails a call to the custom error handler function. It ought to be able to handle any type. It will be a much-used, not-needed language construct that will speed up PHP, produce cleaner code, and encourage the adoption of E_ALL error reporting. Thanks. -- Best regards, Jason mailto:jason@ionzoft.com Monday, June 13, 2005, 8:23:17 PM, you wrote: NB> Rob, NB> I agree with you entirely. It's possible to write this code probably NB> a hundred different ways which, to me, also noting the number of NB> posts the topic has generated, indicates that it should be supported NB> in the language. A common convention for a common operation seems NB> like a sensible goal to me. As nice as it is to be able to roll your NB> own, code sharing is facilitated when we include de facto behaviors. NB> The single implementation close to the metal would also help with NB> speed and code verifiability. NB> Thanks, NB> -Noah NB> On Jun 13, 2005, at 6:33 PM, Robert Cummings wrote: >> On Mon, 2005-06-13 at 16:23, Ron Korving wrote: >> >>> If it were possible at all to make a function accept unset >>> variables without >>> generating a notice, I think ifsetor() shouldn't even be >>> implemented. People >>> could then have the freedom to create such functions themselves. But >>> unfortunately, it doesn't seem to be possible, unless you'd >>> suppress every >>> function call with a @, which I don't think is the way to go in >>> this case. >>> >>> So if it would be possible somehow to create your own isset()-like >>> functions >>> in PHP-code, I'd say implement something that would make that >>> possible, and >>> ingore the whole ifsetor() discussion from that moment on. People >>> would be >>> free to write whatever function they'd prefer. >>> >> >> Voila! >> >> function ifsetordefault( $array, $key, $default=null ) >> { >> if( isset( $array[$key] ) ) >> { >> return $array[$key]; >> } >> >> return $default; >> } >> >> echo ifsetordefault( array( 1 => 'One', 2 => 'Two' ), 3, 'Three' ); >> >> Or if you prefer: >> >> function ifsetpathordefault( $array, $path, $default=null, $sep='/' ) >> { >> $pathBits = explode( $sep, $path ); >> >> $nest = $array; >> foreach( $pathBits as $pathBit ) >> { >> if( !isset( $nest[$pathBit] ) ) >> { >> return $default; >> } >> >> $nest = $nest[$pathBit]; >> } >> >> return $nest; >> } >> >> And yet, I'd still prefer an internal function to do this MUCH MUCH >> MUCH >> faster and then I'd also never need to run across the problem of >> naming >> collisions with other libraries that implement the same code :) >> >> Cheers, >> Rob. >> -- >> ------------------------------------------------------------.. >> | InterJinn Application Framework - http://www.interjinn.com | >> :------------------------------------------------------------: >> | An application and templating framework for PHP. Boasting | >> | a powerful, scalable system for accessing system services | >> | such as forms, properties, sessions, and caches. InterJinn | >> | also provides an extremely flexible architecture for | >> | creating re-usable components quickly and easily. | >> `------------------------------------------------------------' >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> >> >>