Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2948 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [objet] [PHP]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[objet] [PHP]

n°137093
ethernal
Chercheur de vérité...
Posté le 10-05-2002 à 14:00:23  profilanswer
 

hello tous,
 
Je développe toujours mon forum en PHP objet, et je me pose la question :  
Les messages d'erreurs doivent se trouver dans la classe ou dans la page php ?
 
Pour ce qui est de la gestion de l'accès à la BD entre autre, ça me parait clair.  Si le serveur n'est pas joignable, l'application ne sait pas se dérouler correctement... donc dans la classe, je fais un echo et un exit. (je me suis inspiré de la PHPlib je l'avoue  :ange: )
 
Pour ce qui est par exemple de l'affichage de la liste des sujets, si l'utilisateur n'a pas les droits requis pour lister les sujet d'un forum, ou si le forum n'existe pas, ou s'il est fermé.  

  • est-il plus correct de faire ces tests dans la méthode d'initialisation du forum (je suis obligé de faire passer l'objet utilisateur pour ces tests) et d'afficher le message d'erreur + exit (même principe que la classe de gestion de la bd):

$forum->setID($idForum, $objuser);
 

  • la même chose mais la méthode retournerait un code d'erreur correspondant.  L'affichage du message d'erreur est fait dans la page php :

switch($forum->setID($forumID)){
  case 0: break;
  case 1: echo "faut être enregistré"; exit; break;
  ...
  default: echo "Problem"; exit; break;
}
 
inconvénient : les tests sont tous effectués 2x, une fois pour le return error, une fois pour l'affichage du message.  Sans compter que théoriquement l'objet forum n'a théoriquement pas besoin de connaitre l'objet user...
 

  • la méthode retournerait true or false en fonction de l'existence du forum (et encore, je peux le faire par après).  Tout les autres tests sont effectués dans la page php :

if (!$forum->setID($forumID)){ //ou if (!$forum->exist())
  echo "existe pas";
}
if ($forum->getReadAccess()==1 && !$objuser->isRegistered()){
  echo "faut être enregistré";
}
...
 
l'avantage de la dernière méthode vient du fait que si je crée un autre site avec un forum dont les règles ne sont pas les mêmes (pas besoin de gestion de l'utilisateur par ex), ma classe ne doit pas être modifiée.
"l'inconvénient" est ça fait un peu plus fouilli :(
 
alors ça vous a inspiré tous ça ?
merci d'avance :)

 

[jfdsdjhfuetppo]--Message édité par ethernal le 10-05-2002 à 14:01:07--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 10-05-2002 à 14:00:23  profilanswer
 

n°137744
ethernal
Chercheur de vérité...
Posté le 12-05-2002 à 02:35:55  profilanswer
 

la question n'est pas claire ?

n°137749
youdontcar​e
Posté le 12-05-2002 à 02:55:16  profilanswer
 

ethernal a écrit a écrit :

la question n'est pas claire ?


brouillard total pour moi. le seul truc que je peux dire, c'est que faire des echo "machin" en plein milieu du code c'est pas génial. si tu veux changer tes messages, traduire, etc. il vaut mieux utiliser des constantes définies ensemble (par ex).

n°137751
ethernal
Chercheur de vérité...
Posté le 12-05-2002 à 03:52:45  profilanswer
 

:jap:  :love:   une réaction  :)  
 
La question porte sur "comment gérer les messages d'erreurs et leur affichage dans une classe ?" .
 
c vrai que je ne trouve pas non plus très propre de sortir en plein milieu... mais je voulais des confirmations.  
Donc j'élimine la première solution.   :jap:  
 
Est-il mieux de retourner  
- un objet erreur  
- un code d'erreur
- ou un message d'erreur  
si qqch s'est mal passé dans une méthode pour l'afficher dans la page php ?
 
Prenons l'exemple d'une classe véhicule
class véhicule{
  var $nbroues;
  var $cylindrée;
  ...
   
  function véhicule(){
  }
 
  function setnbRoues($nb){
       $this->nbroues= $nb;
  }
 
}
 
qu'est ce qui est correct :

function setnbRoues($nb){
    switch($nb){
    case 0: $error="n'existe pas"; break;
    case 1: $error="impossible"; break;
    case 3: $error="un tricycle ?"; break;
    default : $this->nbroues= $nb;
              $error=true;  
    }
    return $error;
  }
//qd on utilise la méthode, on teste si un message d'erreur est retourné et on l'affiche
 

function setnbRoues($nb){
    if ($nb!=0) {
       $this->nbroues= $nb;
       return true;  
    }
    else return false;
  }
//qd on utilise la méthode, on teste si elle retourne false, dans ce cas on fait les tests qui s'imposent pour afficher le message d'erreur correspondant.

 

[jfdsdjhfuetppo]--Message édité par ethernal le 13-05-2002 à 00:17:21--[/jfdsdjhfuetppo]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [objet] [PHP]

 

Sujets relatifs
[SQL et PHP] - Moyenne[PHP] mkdir et permissions chez free [resolu]
[PHP] comprend pas cette ligne[ASP-PHP] équivalence de code
[PHP] Numéro de semaine HELPPPPBesoin d'aide en PHP [Newbie]
[ DreamweaverMX ] Mauvaise gestion du PHP??[PHP] fonction copy
PHP et programmation orientée objet : est-ce indispensable ?[SONDAGE] qui programme objet en PHP ????
Plus de sujets relatifs à : [objet] [PHP]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR