Re: [PHP] Detect and Redirect Mobile Users

[email protected] (Tamara Temple)
Newsgroups php.general
Message-ID <[email protected]>
Ford, Mike <[email protected]> wrote:
> (someone else wrote:)
> > $browser = get_browser(null, TRUE);
> > if (isset($browser['ismobiledevice']) && ($browser['ismobiledevice'] == TRUE)) {
> >     $isMobile = TRUE;
> > }
> > else {
> >      = FALSE;

Mike's remarks below notwithstanding, I think something fell off here.

> > }
> > unset($browser);
> 
> Argh!, Argh!, Argh! -- two of my pet hates in one snippet!

Tell us how you really feel, Mike. :))

> Comparing something ==TRUE is almost always unnecessary, and
> absolutely always when it's used as an element of a Boolean
> expression: if x evaluates to TRUE, x==TRUE is also TRUE, and if it
> evaluates to FALSE x==TRUE is also FALSE, so the comparison is
> unnecessary, redundant and wasteful. Just use x.

The only time I'd be looking at whether content of $somearray['somekey']
== TRUE is when it's possible that it may contain something other than
TRUE or FALSE, and somehow my code *cares* whether it does. In this
case, we do not, your rant holds.

> And why use an if test on a Boolean value to see if it's TRUE or
> FALSE, just so you can assign TRUE or FALSE?? Since the thing you're
> testing has the value you want in the first place, just flipping
> assign it!

This is most egregious.

>   $isMobile = isset($browser['ismobiledevice']) && $browser['ismobiledevice'];

This would even be a case where I'd opt for:

    $isMobile = @$browser['ismobiledevice'];

since if it *isn't* set, it's still falsy, with the rather strong caveat
of don't use @ indiscriminantly.

> </rant>

Cheers!
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.