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).