# PHP banana peels: common PHP mistakes and and how to avoid them

Last updated:
• comparison operators

using !$foo==="bar" when you really mean $foo!=="bar". In most cases, the second option is what you want;

• UTF-8 and Unicode usage

functions to use when dealing with UTF-8 string: - mb_strtolower("FÚÛÙ-BÅÃÄ","UTF-8")

• **_once functions*

require_once and include_once return only true if you try to require/include a file that has already been included (i.e. if you store code in individual files, use require or include rather than their _once counterparts otherwise it will return true rather than the code you want for the next calls after the first.)

• method names

instance methods in a class can't have the same name as the Class itself or PHP will think it's a constructor (this is supposed to enable backward-compatibility with older PHP versions that used a class' name as the name for the constructor)

• spaces or newlines after closing php tag

this is a big NONO. If you have whitespace or newlines after the php closing tag (?>) you'll get all sorts of hard-to-debug error messages. It's better to have no closing php tag if you file contains only PHP (i.e., no embedded HTML). And yes, it is allowed not to have a closing tag on a PHP file.

• case or

if you want to use or (||) operators inside a case call, this is the right way to do it:

    switch (\$str) {
case 'foo':
case 'FOO':
//do stuff
break;
//... more stuff


In other words, no using || or or after case keyword. (stackoverflow question on using switch/case with or)

Off topic link : 7 ways to reuse a banana peel

This is a w.i.p. (work in progress).