[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-internals
Subject:    Re: [PHP-DEV] ifsetor like expression in php6
From:       Marcus Boerger <helly () php ! net>
Date:       2008-01-27 11:13:27
Message-ID: 5310338527.20080127121327 () marcus-boerger ! de
[Download RAW message or body]

Hello Sam,

  as others pointed out & results in unwanted entries being present. So the
second time you use ifsetor on those entries, you do not get the default
back but rather NULL. Actually in your implementation you never get the
default back.

Please read the archives, all of this has been discussed several times and
we have had a bunch of in depth explanations. In fact our archives hold a
lot of information valid to people new to the list as well as for us
following the list for years. I guess I am not the only one having my own
searchable archive always with me - for a reason.

marcus

Saturday, January 26, 2008, 6:22:09 PM, you wrote:

> I'm sorry I misunderstood. If specifying like "$var ?: 5" then it should
> throw an E_NOTICE, as this is a conditional that checks the value of a
> variable ($var).

> Sebastian, for assigning of a default value is a variable is not set, I
> would recommend using something like this (this is what I use):

> function ifsetor(&$var, $or) {
>         return isset($var) ? $var : $or ;
> }

> Because $var is passed by reference, it won't throw an E_NOTICE when
> passing an undeclared variable.

> On Sat, 2008-01-26 at 17:30 +0100, Sebastian wrote:
>> hi,
>> 
>> i just found the new ifsetor like construction in php6. It left me the 
>> question why php has to throw an E_NOTICE when the variable is not set. This 
>> is basicly because that actually is the meaning of this construction, 
>> checking if the variable is set and if it isnt give back a standard value. 
>> Of course i know this construction can be (mis)used with an Boolean check 
>> ($var===$var2), but this does not make much sence either because TRUE will 
>> then be assigned to the new variable if the expression evaluates to TRUE 
>> (but please correct me if theres a real use for this).
>> 
>> So in any case it would be better to remove the Boolean check feature and 
>> make it a simple ifsetor() without the E_NOTICE again.
>> 
>> For those of you who have not heard of it heres an example:
>> 
>> <?php
>> 
>> // If $_GET['foo'] is set, then its value will be assigned to $foo,
>> // otherwise 42 will be assigned to $foo.
>> 
>> $foo = $_GET['foo'] ?: 42;
>> 
>> ?>
>> 
>> Greetings
>> 
>> Sebastian
>> 




Best regards,
 Marcus

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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic