Exception (exception, mysql et fileexception)

Soyez le premier à donner votre avis sur cette source.

Vue 7 229 fois - Téléchargée 220 fois

Description

Aucune description n'est fournie pour ce projet

Codes Sources

A voir également

Ajouter un commentaire Commentaires
FhX
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
11 juin 2007 à 19:25
Pas mal, pas mal :)
2 voir 3 ptites choses quand même :

public function nbrThrow(){
return Exception747::$NbrThrow;
}
public function nbrThrow(){
return MysqlException::$NbrThrow;
}

Y'a de la re déclaration en trop ici. Théoriquement, tu devrais pouvoir faire (dans ta classe parente ):
static public function nbrThrow() {
return self::$NbrThrow;
}
Normalement, elles doivent pouvoir jouer avec les classes filles (étant donné que le nom de la propriété statique est la même).

Cependant, je vois comme un ptit problème de conception.
$NbrThrow, tu l'utilises dans ta classe parente, et que tu re-déclares par la suite dans tes classes filles. Les classes filles n'ont pas à savoir combien de Throw() ont été lancés, en effet, seule la classe parente doit s'en occuper. Ce qui aurait été plus judicieux (mais un peu plus gourmand je l'admet), c'est couper la poire en 2 :

class Exception747 extends Exception {
static private $TotalThrow = 0;
public function __construct(...) {
self::$TotalThrow++;
}
}
class MySQLException extends Exception747 {
static protected $Throw = 0;
public function __construct(...) {
parent::__construct(....);
self::$Throw++;
}

Encore que, on aurait pu faire quelque chose comme ca aussi :

class Exception747 extends Exception {
static private $AllThrows = null;
static private $CountAllThrows = 0;
public function __construct($msg, $name) {
self::$AllThrows[$name]++;
self::$CountAllThrows++;
}
static public function getCountThrowsFor($string = 'all') {
$string = strtolower($string);
if ( $string === 'all' )
return self::$CountAllThrows;
elseif ( isset( self::$AllThrows[$string] ) )
return self::$AllThrows[$string];
else
return 0;
}

}
class MySQLException extends Exception747 {
public function __construct(...) {
parent::_construct($msg, 'mysql' );
}

Ce qui permet tout de même de faire :
try {
...
...
} catch ( MySQLException $mysql_e ) {
//
}
try {
...
...
} catch ( MySQLException $mysql_e ) {
//
} catch ( FileException $file_e ) {
//
}

echo 'Nombre d\'exceptions lancées : '.Exception747::getCountThrowsFor('all').' dont '.Exception747::getCountThrowsFor('mysql').' pour MySQL et '.Exception747::getCountThrowsFor('file').' pour les fichiers.';

Eventuellement, dans ce concept, tu peux aussi vérifier l'appel de la classe dans la méthode pour éviter de faire passer via paramètre ce que tu veux rechercher.

C'est une question de point de vue de programmation de toute facon, mon avis n'a pas besoin d'être forcément suivi car ta solution est tout aussi viable. Ma solution est plus lourde aussi... ce qui peut être handicapant.


Le reste y'a rien à dire de toute facon :)
Bravo :)
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
41
11 juin 2007 à 00:13
Merci
webdeb
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
10 juin 2007 à 22:59
Bah je crois que je vais tester tout ça moi :) Ca me semble bien cool ton appli Coucou747

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.