Edit report at https://bugs.php.net/bug.php?id=40296&edit=1

 ID:                 40296
 Comment by:         email at philsturgeon dot co dot uk
 Reported by:        mail at tobyinkster dot co dot uk
 Summary:            "unless" control structure
 Status:             Open
 Type:               Feature/Change Request
 Package:            Feature/Change Request
 Operating System:   All
 PHP Version:        5.2.0
 Block user comment: N
 Private report:     N

 New Comment:

I am surprised to see such a lack of interest on this feature request. 

Ruby and Perl both have "unless", and while that is certainly not a reason on 
its 
own, it does show that this is used. 

There are two people here saying that unless is confusing. How so? If something 
matches false then do whatever. It has an else too, so if something is true it 
will be used.

The main point here is not to remove a single !, but to make much cleaner 
syntax.

if ( ! (isset($foo) or ($foo !== 'bar')) exit('invalid value');

or 

unless (isset($foo) and $foo === 'bar') exit('invalid value');

Its a minor difference as I cannot remember a more compelling example, but 
there 
have been numerous times I have wished to reverse this and have unless instead 
of 
an extremely complex if statement.

Unless just makes sense, it's optional, it doesn't break BC, it makes syntax 
easier to read in some situations and it is easy to document. If I knew enough 
C 
I'd send in a patch right now as PHP would be better off for having this.


Previous Comments:
------------------------------------------------------------------------
[2011-12-30 13:50:47] joke at nakhon dot net

I vote against this request. Both perl and ruby's 'unless' confuse me so much. 
It can be easy to abuse.

I often encounter someone wrote code like this:

unless a != 7
  b = 3
else
  b = 6
end

------------------------------------------------------------------------
[2011-08-04 20:59:24] achaia3 at gmail dot com

This would be a convenient feature for sure with no down sides for anybody not 
wishing to use it.

------------------------------------------------------------------------
[2011-06-05 22:47:45] mattr dot smith at gmail dot com

I also request this feature. 

Ruby has this structure too and really adds to the readability of code.

I don't see any argument at against this that is valid other than the fact that 
PHP programmers don't want to change.

------------------------------------------------------------------------
[2007-12-31 23:19:51] michael at chunkycow dot com dot au

G'day

Perl has lots of 'features' in it, although I cannot see how an 
'unless' control structure adds to anything but confusion for existing/new 
developers.

------------------------------------------------------------------------
[2007-01-31 12:26:42] mail at tobyinkster dot co dot uk

Description:
------------
It would be nice if PHP had an "unless" control structure so that:

    unless (...) { ... }

would be equivalent to:

    if (!(...)) { ... }

Although the "unless" control structure is actually slightly more verbose (in 
bytes) than "if", it is arguably a lot more readable in the following examples:

    unless ($a==0 || $b==0)
        divide_by($a*$b);

versus:

    if (!($a==0 || $b==0))
        divide_by($a*$b);

or, equivalently using De Morgan's Law (Google for it):

    if ($a!=0 && $b!=0)
        divide_by($a*$b);

The "unless" structure uses less punctuation, and more human syntax. I can't 
imagine how this extra syntax would break any existing scripts.

For what it's worth, Perl already has an "unless" control structure.



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=40296&edit=1

Reply via email to