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: