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