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:[EMAIL PROTECTED]

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
>>
>>
>>
>>

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

Reply via email to