Re: [PHP] UNLESS Statement Equivalent

[email protected] (Larry Garfield)
Newsgroups php.general
Message-ID <[email protected]>
On 3/11/13 6:25 PM, Angela Barone wrote:
> On Mar 11, 2013, at 4:10 PM, Jonathan Sundquist wrote:
>> the variable $current_page does not exist.
>
> 	That was my problem. :(  I've been staring at this for too long.  Too bad there's not a 'use strict' pragma.

There is.  Always set your development environment to E_ALL | E_STRICT, 
and it will yell at you about every little thing, including undefined 
variables.

http://php.net/manual/en/function.error-reporting.php

>> I would also suggest keeping with your original statement to return early and return often. Its best to exit out of your functions sooner than later.  Specially if its a large function.
>
> 	O.K.  I just thought there might be a more elegant way of doing it.  I at least got rid of the else statement like you mentioned.
>
> Thanks for your help,
> Angela

If you find yourself with a function that's too long and complex from 
the if-statements, your first step is to break it up into utility functions.

if (...) {
   // Something Long
}
else {
   // Something Else Long
}

Becomes:

if (...) {
   something_long();
}
else {
   something_else_long();
}

function something_long() {

}

function something_else_long() {

}

That helps both readability and testability.

Also, on your original boolean question, note that negation is 
distributive.  That is:

!($a && $b && $c)

is the same as:

!$a || !$b || $!c

Which means that if your checks are all equality checks, as in your 
case, you can simply do:

if ($a != 'a' || $b != 'b' || $c >= 'c') {

}

Which may be easier to read.  If those checks are not trivial then 
there's also a micro-performance benefit there, as the first statement 
that evaluates to true will cause the whole thing to return true, so the 
second and third options don't need to be evaluated.

--Larry Garfield
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.