Home PHP Function Design
Function Structure
If you have a single function that is very long, break it apart into smaller sub-functions. The definition of "very long" is vague, but often a function longer than 20-30 lines is pushing it.
If you try to describe the function's purpose and find yourself using the word "and" a lot, that probably means the function does too many things and should be split into sub-functions.
Boolean Zen
              Don't ever test whether a boolean value is == or 
              != to TRUE or FALSE.
            
if ($x == TRUE) {
  ...
} else if ($x != TRUE) {
  ...
}
            
if ($x) {
  ...
} else {
  ...
}
            
              If you have an if/else statement that returns a boolean value based on a test, just directly return the test's result instead.
            
if ($score1 == $score2) {
  return TRUE;
} else {
  return FALSE;
}
            return $score1 == $score2;
If/Else Usage
If/Else Branching Patterns
              When using if/else statements, properly choose between various if and else patterns depending on whether the conditions relate to one another. Avoid redundant or unnecessary if tests.
            
if ($grade >= 90) {
  print("You got an A!");
}
if ($grade >= 80 && $grade < 90) {
  print("You got a B!");
}
if ($grade >= 70 && $grade < 80) {
  print("You got a C!");
}
...
            
if ($grade >= 90) {
  print("You got an A!");
} else if ($grade >= 80) {
  print("You got a B!");
} else if ($grade >= 70) {
  print("You got a C!");
}
...
            If/Else Factoring
              Move common code out of if/else statements so that it is not repeated
              (ie., minimize redundancy in your code).
            
if ($x < $y) {
  foo();
  $x++;
  print("hi");
} else {
  foo();
  $y++;
  print("hi");
}
            
foo();
if ($x < $y) {
  $x++;
} else {
  $y++;
}
print("hi");
            Loop Usage
For Loops vs. While Loops
              Use a for loop when the number of repetitions is known (definite); use a
              while loop when the number of repetitions is unknown (indefinite).
            
// repeat exactly size/2 times
for ($i = 0; i < $size / 2; $i++) {
  ...
}
// repeat until $x is <= 0
while ($x > 0) {
  ... // do something with $x
}