JeuWeb - Crée ton jeu par navigateur
[Résolu] Exceptions - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Exceptions (/showthread.php?tid=2541)



[Résolu] Exceptions - Papa Koala - 07-03-2008

bonjour je viens ici a nouveau solliciter votre aide
ceux qui sarrete aux apparences passer votre chemin jai pas besoin de vous si vous voulez pas aider
merci

ceux qui auront la cordialité de maider,voila a peu prèsla situation.

je travail pour linstant a poser lenvironnement de travail pour le developpement de valorbe
on a commencé a travailler lundi ou mardi et la jai presque fini
jai choisi dutiliser le pattern mvc parce que dans le concept cest bien interessant meme si un peu plus gonflant dans la pratique
mon architecture est la suivante(avec quelques fichiers pour la mise en situation):
Code :
valorbe/
   application/
      controller/
         footerController.php
         headerController.php
         homeController.php
         playerController.php
      model/
         MysqlModel.php
         PlayerModel.php
      view/
         footer.html
         header.html
         player.html
   config/
      config.php
   public/
      image/
      lang/
      script/
      style/
   index.php
jvous cacherait pas que je ne respecte pas strictement le concept mvc, jai préféré faire quelque chose de simple pour moi et corwin et qui marche bien
la, jai decrit larchitecture actuel mais evidemment la moitié nest pas utile pour ce que je ais parler dans la suite

jcontinue de vous mettre en condition
ci suit la classe MysqlModel - en partie - :
Code PHP :
<?php
class MysqlModel
{
public static function
connect()
{
if (
self::$w['init'] != 1)
throw new
Exception('MySQL Class Error : Class not initialised');

self::$w['connect'] = @mysql_connect (self::$ro['host'], self::$ro['user'], self::$ro['password']);
if (!(
self::$w['connect']))
throw new
Exception('MySQL Error : Connexion impossible' . "\n" .
'Server Error n&deg;' . mysql_error() . ' : ' . mysql_error()
);

return
1;
}
}
donc la,vous comprenez la manip

un exemple dans class PlayerModel:
Code PHP :
<?php
/**
* Verify if the account asked is not already activate
*/
public function isActive()
{
try
{
MysqlModel::connect();
}
catch(
Exception $exception)
{
throw new
Exception($exception);
}

$select = MysqlModel::query(
'SELECT rank' .
' FROM ' . $this->ro['tablePrefix'].$this->ro['tableName'] .
' WHERE id_player = ' . $this->w['idPlayer']
);
$arrayResult = mysql_fetch_array($select);
if (
$arrayResult === -1)
return
0;
else
return
1;
}
}
bonba la vous voyez,si la connection lance une exception jla capte et conceptuellement vou conviendrez que cest pas correcte dafficher une erruer dans model, cest pas du tout son role
donc je capte lerreur et je la remonte au controller

exemple dans playerController:
Code PHP :
<?php
require_once MODEL_DIR . '/PlayerModel.php';

$playerInstance = new PlayerModel(array( /* Avec tout ce qui va bien */ ));
try
{
$playerExists = $playerInstance->exists();
if (
$playerExists === 1)
{
/* ... */
}
elseif (
$playerExists == 2)
{
/* ... */
}
else
{
/* ... */
}
}
catch(
Exception $exception)
{
/* traitement de l'erreur */
/* affichage d'un message d'erreur personnalisé pour l'user */
}

et voila ENFIN ma question:
il existe pas un moyen de faire remonter lerreur au plus haut niveau?

merci a ceux qui auront le courage de lire tout

pk


RE: parlons exceptions - Anthor - 08-03-2008

Qu'entend tu par plus haut niveau ?


RE: parlons exceptions - Zamentur - 08-03-2008

Ben si tu veux dire faire remonter l'erreur dans le code appelant et instanciant l'objet (et non celui de la classe) C'est peut être faisable avec la fonction qui sert à définir les erreurs utilisateurs (j'ai oublié son nom et j'ai la flemme de chercher à cette heure))

Sinon je suis aussi intéressé, ce que j'aimerais c'est pouvoir gérer des erreurs de ce style et enregistrer la ligne du code là ou l'objet est appelé et non la ligne de l'erreur...


RE: parlons exceptions - Studio Gamboo - 08-03-2008

Peut-être que tu trouvera ton bonheur ici :
http://guillaume-affringue.developpez.com/exceptions-et-PHP5/
Vers la fin je pense que ça te concerne.
Cordialement Smile


RE: parlons exceptions - Papa Koala - 09-03-2008

Merci pour vos participations.
SG, merci pour l'indication, j'ai pu préciser mes connaissances dans l'utilisation des exceptions avec PHP.

Bye.