But how about this..:

Let's not implement functions that do what you want to achieve, but extend
PHP in whatever way necessary that would enable you to write such a function
yourself?

Say for example that prepending @ to function parameters would make it
possible to call the function with an unset variable. Then you could write
ifsetor() yourself:

function ifsetor(@$var, $default)
{
  return (isset($var)) ? $var : $default;
}

Someone else might prefer call by reference:

function ifsetor(@&$var, $default)
{
  if (!isset($var)) $var = $default;
}

And someone else might prefer using empty() :

function notemptyor(@$var, $default)
{
  return (empty($var)) ? $default : $var;
}

So what I would prefer is a syntax extension of some sort. The @ is just an
example of course, and I'm sure it's not the prettiest way to deal with the
feature, but I think implementing such a thing would be best for everybody.
This way everybody can implement the ifsetor() feature in whatever way they
please. It would end the whole ifsetor() discussion in this list anyway ;)

Ron


"Hartmut Holzgraefe" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> M. Sokolewicz wrote:
>  >> $x = (isset($ANY_var) ? $ANY_var : 'Default Value');
>  >> by
>  >> $x = ifsetor($ANY_var, 'Default Value');
>  >>
> > I must say I fully agree; I don't see any use in putting extra functions
> > in the PHP namespace just because people don't want to type a couple of
> > extra characters.
>
> it is not "a few extra characters", its "needless duplication of
characters",
> and the number of characters multiplies with the number of uses of the
> construct
>
> please keep in mind that $ANY_var can be a variable name of any length
> or an element of a multidimensional array. this can leed to unreadably
long
> statements, hard to track down copy errors and is a maintainance nichtmare
> as you always have to change things in two places at the same time
>
> How quick can you spot the error in the following assignment?
> And if you didn't know the context: how long would it take you
> to find out what it does?
>
>    $x = (isset($config['general']['foo']['bar']['somelist']) ?
$config['general']['foo']['bar']['sonelist'] : "default");
>
> On the other hand the meaning of
>
>    $x = ifsetor($config['general']['foo']['bar']['somelist'], "default");
>
> is pretty clear, only about half as long and way less error prone.
>
> I don't really like the name 'ifsetor' but i *love* the concept and given
> that there is no proper way to implement this function in user space
> i'm perfectly in favor of its addition.

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

Reply via email to