Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 7 | class Startup{ |
||
| 8 | public static $urlParts; |
||
| 9 | private static $config; |
||
| 10 | |||
| 11 | public static function run(array &$config,$url){ |
||
| 44 | |||
| 45 | private static function parseUrl($config,$url){ |
||
| 55 | |||
| 56 | private static function startTemplateEngine($config){ |
||
| 73 | |||
| 74 | public static function runAction($u,$initialize=true,$finalize=true){ |
||
| 97 | |||
| 98 | private static function callController(Controller $controller,$u){ |
||
| 99 | $urlSize=sizeof($u); |
||
| 100 | try{ |
||
| 101 | switch ($urlSize) { |
||
| 102 | case 1: |
||
| 103 | $controller->index(); |
||
| 104 | break; |
||
| 105 | case 2: |
||
| 106 | $action=$u[1]; |
||
| 107 | //Appel de la méthode (2ème élément du tableau) |
||
| 108 | if(method_exists($controller, $action)){ |
||
| 109 | $controller->$action(); |
||
| 110 | }else{ |
||
| 111 | print "La méthode `{$action}` n'existe pas sur le contrôleur `".$u[0]."`<br/>"; |
||
| 112 | } |
||
| 113 | break; |
||
| 114 | default: |
||
| 115 | //Appel de la méthode en lui passant en paramètre le reste du tableau |
||
| 116 | \call_user_func_array(array($controller,$u[1]), array_slice($u, 2)); |
||
| 117 | break; |
||
| 118 | } |
||
| 119 | }catch (\Exception $e){ |
||
| 120 | print "Error!: " . $e->getMessage() . "<br/>"; |
||
| 121 | } |
||
| 122 | } |
||
| 123 | |||
| 124 | public static function getConfig(){ |
||
| 127 | |||
| 128 | public static function errorHandler($severity, $message, $filename, $lineno) { |
||
| 136 | } |
||
| 137 |
If you suppress an error, we recommend checking for the error condition explicitly: