Sebastian
Sebastian

Reputation: 709

Why some programmers use this "if" condition (and what to do to make it work)

Why many programmers use:

if ($_GET['var'] or $this->error)

instead of

if (isset($_GET['var']) or isset($this->error)

without adding

        error_reporting( error_reporting() & ~E_NOTICE )

or, (shorter but slower)

        if (@$_GET['var'] or @$this->error)

...or something similar ?

Do you need to somehow (?) configure php in the ini file to suppress the errors on non-existing variables and properties to use the "feature" or is it simply a bad practice one should avoid?

Upvotes: 1

Views: 137

Answers (4)

Your Common Sense
Your Common Sense

Reputation: 158005

what is the "correct" syntax of conditions for variables and properties that may or may not exist

Unfortunately, there is none.

Every variable used in the code should be defined first. That's the only good practice, if you want one.

So, for the class properties it's easy - it's already commonplace that every one of them should be defined in the class definition.

For the outside variables it's less obvious.
There is no single scenario. Say, if program flow depends on the existence of GET variable, it's OK to check if it's set*

if (isset($GET['page'])) ...

note that we're not using this variable contents but only checking it's existence!

otherwise, if we expect page to be always set, we have to check it first, and set a default value if not. and then use that new variable instead of $_GET one.

Upvotes: 0

Shai Mishali
Shai Mishali

Reputation: 9402

This doesn't seem to me like bast practice at all. As you said correctly, without setting the error_reporting, PHP would throw many warnings on specific cases (where the variables weren't set).

Using isset seems to me like the best way.

Upvotes: 0

Olli
Olli

Reputation: 752

They will use it because it´s faster to type. And they may not think all problems it may cause.

Upvotes: 0

user680786
user680786

Reputation:

or is it simply a bad practice one should avoid?

Definitely yes. It's a bad practice to suppress or ignore errors.

Upvotes: 6

Related Questions