Subversion Repositories Applications.framework

Rev

Rev 105 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 105 Rev 120
Line 1... Line 1...
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
* classe de gestion des erreurs.
4
* classe de gestion des erreurs.
5
* 
5
*
6
* PHP Version 5 
6
* PHP Version 5
7
* 
7
*
8
* @category  Class
8
* @category  Class
9
* @package   Framework
9
* @package   Framework
10
* @author    Jean-Pascal Milcent <jpm@tela-botanica.org>
10
* @author    Jean-Pascal Milcent <jpm@tela-botanica.org>
11
* @copyright 2009 Tela-Botanica
11
* @copyright 2009 Tela-Botanica
12
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL  
12
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
13
* @license   http://www.gnu.org/licenses/gpl.html Licence GNU-GPL  
13
* @license   http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
14
* @version   SVN: $$Id: GestionnaireErreur.php 105 2009-08-31 15:25:05Z aurelien $$ 
14
* @version   SVN: $$Id: GestionnaireErreur.php 120 2009-09-01 12:21:14Z aurelien $$
15
* @link      /doc/framework/ 
15
* @link      /doc/framework/
16
* 
16
*
17
*/
17
*/
18
class GestionnaireErreur
18
class GestionnaireErreur
19
{
19
{
20
	/*** Attributs: ***/
20
	/*** Attributs: ***/
Line 35... Line 35...
35
	 * Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,
35
	 * Permet de savoir si on veut faire apparaître ou pas le contexte de l'erreur,
36
	 * c'est à dire le contenu des variables.
36
	 * c'est à dire le contenu des variables.
37
	 * @access private
37
	 * @access private
38
	 */
38
	 */
39
	private $contexte;
39
	private $contexte;
40
	
40
 
41
	/**
41
	/**
42
	 * Contient le niveau d'erreur courant. Celui que l'on donne à la fonction
42
	 * Contient le niveau d'erreur courant. Celui que l'on donne à la fonction
43
	 * error_reporting().
43
	 * error_reporting().
44
	 * @access private
44
	 * @access private
45
	 */
45
	 */
46
	private $niveau_erreur_courant;
46
	private $niveau_erreur_courant;
47
	
47
 
48
	/**
48
	/**
49
	 * Le gestionnaire d'erreur est un singleton
49
	 * Le gestionnaire d'erreur est un singleton
50
	 */
50
	 */
51
	private static $gestionnaire_erreurs;
51
	private static $gestionnaire_erreurs;
52
	
52
 
53
	/*** Constructeur: ***/
53
	/*** Constructeur: ***/
54
	
54
 
55
	/**
55
	/**
56
	 * Construit le gestionnaire d'erreur.
56
	 * Construit le gestionnaire d'erreur.
57
	 *
57
	 *
58
	 * @return void
58
	 * @return void
59
	 * @access public
59
	 * @access public
Line 62... Line 62...
62
	{
62
	{
63
		$this->mode = php_sapi_name();
63
		$this->mode = php_sapi_name();
64
		$this->erreurs = array();
64
		$this->erreurs = array();
65
		$this->setContexte($contexte);
65
		$this->setContexte($contexte);
66
		$this->niveau_erreur_courant = 2048 ;
66
		$this->niveau_erreur_courant = 2048 ;
67
		set_error_handler(array(&$this, 'gererErreur'));
67
		//set_error_handler(array(&$this, 'gererErreur'));
68
	}
68
	}
69
	
69
 
70
	/**
70
	/**
71
	 * Fonction d'accès au singleton
71
	 * Fonction d'accès au singleton
72
	 * @return GestionnaireErreur le gestionnaire d'erreurs courant
72
	 * @return GestionnaireErreur le gestionnaire d'erreurs courant
73
	 */
73
	 */
74
	public static function getInstance()
74
	public static function getInstance()
Line 77... Line 77...
77
			return self::$gestionnaire_erreurs;
77
			return self::$gestionnaire_erreurs;
78
		}
78
		}
79
		self::$gestionnaire_erreurs = new GestionnaireErreur ;
79
		self::$gestionnaire_erreurs = new GestionnaireErreur ;
80
	    return self::$gestionnaire_erreurs;
80
	    return self::$gestionnaire_erreurs;
81
	}
81
	}
82
	
82
 
83
	/*** Accesseurs: ***/
83
	/*** Accesseurs: ***/
84
	/**
84
	/**
85
	 * Récupère le tableau des erreurs.
85
	 * Récupère le tableau des erreurs.
86
	 *
86
	 *
87
	 * @return array
87
	 * @return array
Line 92... Line 92...
92
	}
92
	}
Line 93... Line 93...
93
 
93
 
94
	/**
94
	/**
95
	 * Ajoute une erreur à la liste.
95
	 * Ajoute une erreur à la liste.
96
	 *
96
	 *
97
	 * @param array une_erreur 	 
97
	 * @param array une_erreur
98
	 * @return void
98
	 * @return void
99
	 * @access public
99
	 * @access public
100
	 */
100
	 */
101
	public function setErreur( $une_erreur ) {
101
	public function setErreur( $une_erreur ) {
Line 120... Line 120...
120
	 * @access public
120
	 * @access public
121
	 */
121
	 */
122
	public function setContexte( $un_contexte ) {
122
	public function setContexte( $un_contexte ) {
123
		$this->contexte = $un_contexte;
123
		$this->contexte = $un_contexte;
124
	}
124
	}
125
	
125
 
126
	/**
126
	/**
127
	 * Récupère le niveau d'erreur courrant.
127
	 * Récupère le niveau d'erreur courrant.
128
	 *
128
	 *
129
	 * @return int le niveau d'erreur courrant.
129
	 * @return int le niveau d'erreur courrant.
130
	 * @access public
130
	 * @access public
Line 141... Line 141...
141
	 * @access public
141
	 * @access public
142
	 */
142
	 */
143
	public function setNiveauErreurCourant( $niveau = 2048 ) {
143
	public function setNiveauErreurCourant( $niveau = 2048 ) {
144
		$this->niveau_erreur_courant = $niveau;
144
		$this->niveau_erreur_courant = $niveau;
145
	}
145
	}
146
	
146
 
147
	/**
147
	/**
148
	 * Définit le niveau d'erreur courrant (synonyme fonction precedente)
148
	 * Définit le niveau d'erreur courrant (synonyme fonction precedente)
149
	 *
149
	 *
150
	 * @param int un niveau d'erreur.
150
	 * @param int un niveau d'erreur.
151
	 * @return void
151
	 * @return void
152
	 * @access public
152
	 * @access public
153
	 */
153
	 */
154
	public function setActive ($niveau) {
154
	public function setActive ($niveau) {
155
		$this->niveau_erreur_courant = $niveau;
155
		$this->niveau_erreur_courant = $niveau;
156
	}
156
	}
157
	
157
 
158
	
158
 
159
	/*** Méthodes : ***/
159
	/*** Méthodes : ***/
160
	
160
 
161
	/**
161
	/**
162
	 *
162
	 *
163
	 * @param int niveau
163
	 * @param int niveau
164
	 * @param string message
164
	 * @param string message
165
	 * @param string fichier
165
	 * @param string fichier
Line 183... Line 183...
183
					}
183
					}
184
					break;
184
					break;
185
				default:
185
				default:
186
					$aso_erreur['message'] = $message;
186
					$aso_erreur['message'] = $message;
187
			}
187
			}
188
			
188
 
189
			$aso_erreur['fichier'] = $fichier;
189
			$aso_erreur['fichier'] = $fichier;
190
			$aso_erreur['ligne'] = $ligne;
190
			$aso_erreur['ligne'] = $ligne;
191
			if ($this->getContexte()) {
191
			if ($this->getContexte()) {
192
				$aso_erreur['contexte'] = $contexte;
192
				$aso_erreur['contexte'] = $contexte;
193
			}
193
			}
194
			$this->setErreur($aso_erreur);
194
			$this->setErreur($aso_erreur);
195
		}
195
		}
196
		
196
 
197
		echo print_r($this->erreurs,true) ;
197
		echo print_r($this->erreurs,true) ;
198
		exit() ;
198
		exit() ;
199
		// Si nous avons affaire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
199
		// Si nous avons affaire à une erreur et non à un warning ou une notice, nous arrêtons l'exécution du script
200
		switch ($niveau) {
200
		switch ($niveau) {
201
			case E_ERROR :
201
			case E_ERROR :
Line 223... Line 223...
223
			switch ($this->mode) {
223
			switch ($this->mode) {
224
				case 'cli' :
224
				case 'cli' :
225
					if ($aso_erreur['niveau'] == E_USER_NOTICE) {
225
					if ($aso_erreur['niveau'] == E_USER_NOTICE) {
226
						$retour .= $aso_erreur['message']."\n";
226
						$retour .= $aso_erreur['message']."\n";
227
						$retour .= 'Fichier : '.$aso_erreur['fichier']."\n";
227
						$retour .= 'Fichier : '.$aso_erreur['fichier']."\n";
228
						$retour .= 'Ligne : '.$aso_erreur['ligne']."\n";						
228
						$retour .= 'Ligne : '.$aso_erreur['ligne']."\n";
229
					} else if ($aso_erreur['niveau'] <= 512) {
229
					} else if ($aso_erreur['niveau'] <= 512) {
230
						$retour .= 'INFO : Niveau '.$aso_erreur['niveau']."\n";
230
						$retour .= 'INFO : Niveau '.$aso_erreur['niveau']."\n";
231
					} else {
231
					} else {
232
						$retour .= 'ERREUR : Niveau '.$aso_erreur['niveau']."\n";
232
						$retour .= 'ERREUR : Niveau '.$aso_erreur['niveau']."\n";
233
					}
233
					}
Line 263... Line 263...
263
						$retour .= '<strong>Contexte : </strong>'."\n".print_r($aso_erreur['contexte'], true)."\n";
263
						$retour .= '<strong>Contexte : </strong>'."\n".print_r($aso_erreur['contexte'], true)."\n";
264
						$retour .= '</pre>'."\n";
264
						$retour .= '</pre>'."\n";
265
					}
265
					}
266
					$retour .= '</p>'."\n";
266
					$retour .= '</p>'."\n";
267
			}
267
			}
268
		} 
268
		}
269
				
269
 
270
		return $retour;
270
		return $retour;
271
	}
271
	}
Line 272... Line 272...
272
 
272
 
273
	/**
273
	/**
Line 293... Line 293...
293
				$retour .= 'Message : '.$message."\n";
293
				$retour .= 'Message : '.$message."\n";
294
				if (!is_null($requete)) {
294
				if (!is_null($requete)) {
295
					$retour .= 'Requete : '."\n";
295
					$retour .= 'Requete : '."\n";
296
					$retour .= $requete."\n";
296
					$retour .= $requete."\n";
297
		    	}
297
		    	}
298
		    	
298
 
299
				if (!is_null($autres)) {
299
				if (!is_null($autres)) {
300
					$retour .= 'Autres infos : '."\n";
300
					$retour .= 'Autres infos : '."\n";
301
					$retour .= $autres."\n";
301
					$retour .= $autres."\n";
302
				}
302
				}
303
				break;
303
				break;
Line 306... Line 306...
306
				$retour .= '<div id="zone_erreur">'."\n";
306
				$retour .= '<div id="zone_erreur">'."\n";
307
				$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
307
				$retour .= '<h1 > ERREUR SQL </h1><br />'."\n";
308
				$retour .= '<dl>'."\n";
308
				$retour .= '<dl>'."\n";
309
				$retour .= '<dt> Fichier : </dt> ';
309
				$retour .= '<dt> Fichier : </dt> ';
310
				$retour .= '<dd> '.$fichier.'</dd>'."\n";
310
				$retour .= '<dd> '.$fichier.'</dd>'."\n";
311
				
311
 
312
				$retour .= '<dt> Méthode : </dt> ';
312
				$retour .= '<dt> Méthode : </dt> ';
313
				$retour .= '<dd> '.$methode.'</dd>'."\n";
313
				$retour .= '<dd> '.$methode.'</dd>'."\n";
314
				
314
 
315
				$retour .= '<dt> Message erreur : </dt> ';
315
				$retour .= '<dt> Message erreur : </dt> ';
316
				$retour .= '<dd> '.$message.'</dd>'."\n";
316
				$retour .= '<dd> '.$message.'</dd>'."\n";
317
				
317
 
318
				if (!is_null($requete)) {
318
				if (!is_null($requete)) {
319
					$retour .= '<dt> Requete : </dt> ';
319
					$retour .= '<dt> Requete : </dt> ';
320
					$retour .= '<dd> '.$requete.' </dd>'."\n";
320
					$retour .= '<dd> '.$requete.' </dd>'."\n";
321
		    	}
321
		    	}
322
		    	
322
 
323
				if (!is_null($autres)) {
323
				if (!is_null($autres)) {
324
					$retour .= '<dt> Autres infos : </dt> ';
324
					$retour .= '<dt> Autres infos : </dt> ';
325
					$retour .= '<dd> '.$autres.' </dd>'."\n";
325
					$retour .= '<dd> '.$autres.' </dd>'."\n";
326
				}
326
				}
327
				$retour .= '</dl>'."\n";
327
				$retour .= '</dl>'."\n";
328
				$retour .= '</div>'."\n";
328
				$retour .= '</div>'."\n";
329
				$retour .= '<!-- END sql -->'."\n";
329
				$retour .= '<!-- END sql -->'."\n";
330
		}
330
		}
331
		return $retour;
331
		return $retour;
332
	}	
332
	}
333
}
333
}
334
?>
334
?>
335
335