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

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Isset() Centraliser les erreurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Isset() Centraliser les erreurs

n°2098273
alexandre_​j
Posté le 29-08-2011 à 19:41:09  profilanswer
 

Bonjour !
Je développe un site plus ou moins important en Php + Doctrine et je suis face à un élément redondant.
 
Sur pas mal de pages, je récupère un élément de la base de données pour afficher son détail. Du coup à chaque fois, je fais un isset sur ma variable de retour et affiche un message comme quoi il y a un problème.
 
Le truc c'est que ça fait pas mal de répétition de code du genre :
 

Code :
  1. if (!$myItem) {
  2.     include('pagenotfound.php');
  3.     exit();
  4. }


 
Donc je pensais centraliser tout ça avec une fonction du style :
 

Code :
  1. function checkIsSet($var) {
  2.     if (!$var) {
  3.         include('pagenotfound.php');
  4.         exit();
  5.     }
  6. }


 
Comme vous en doutez, pour faire appel à ma fonction, j'utilise la variable donc je me retrouve avec une notice :
 

Citation :

Notice: Undefined variable: myItem in...


 
Existe t-il un moyen plus élégant et fonctionnel ?


Message édité par alexandre_j le 30-08-2011 à 08:43:00
mood
Publicité
Posté le 29-08-2011 à 19:41:09  profilanswer
 

n°2098298
CyberDenix
Posté le 29-08-2011 à 22:32:14  profilanswer
 

Passe le nom de ta variable en string à la fonction ($varName), et dans la fonction fait un if ( isset(${$VarName}) )


---------------
Directeur Technique (CTO)
n°2098304
alexandre_​j
Posté le 29-08-2011 à 23:32:52  profilanswer
 

Hum, un peu tard pour faire de la gymnastique de var :)
 
J'ai essayé ça comme ça :
 

Code :
  1. $entreprise = Doctrine_Core::getTable('Entreprise')->find($id);
  2. checkIsSet('entreprise');
  3. function checkIsSet($var) {
  4.     if (!isset(${$var})) {
  5.         include('./core/pagenf.php');
  6.         exit();
  7.     }
  8. }


 
Mais ça ne fonctionne pas. Dans ma fonction ${$var} est bien l'équivalent de $entreprise ?
Je réfléchis en répondant, mais la portée n'est plus bonne pour ma var $entreprise dans tous les cas non ?


Message édité par alexandre_j le 29-08-2011 à 23:33:37
n°2098310
CyberDenix
Posté le 30-08-2011 à 01:04:34  profilanswer
 

D'un côté il y a le check isset, de l'autre le check si la valeur est nulle.
 
Mais effectivement, c'est un problème de portée.
 
Une solution pourrait être de tenter un global ${$var}, mais n'utilisant jamais de variable globales dans mes codes, je n'en connais pas le comportement exact et j'ai peur que cela initialise ta variable, rendant de fait le isset() intra-fonction inopérant.
 
Une autre solution pourrait être de passer le résultat du isset en paramètre à ta fonction.
 
 
Dans le cadre de classes, il y a peut être moyen d'utiliser les méthodes magiques style __isset() et __unset().  
 
 
La solution la plus accessible à mon sens reste de toujours initialiser ta variable à null en premier lieu, et comme ça elle existe quoi qu'il se passe. Acceptable ou non suivant ce que tu tentes de réaliser.
 
 
A voir, donc.


Message édité par CyberDenix le 30-08-2011 à 01:08:08

---------------
Directeur Technique (CTO)
n°2098327
alexandre_​j
Posté le 30-08-2011 à 08:42:26  profilanswer
 

Merci pour tes réponses.
Je vais opter pour le moins de code, donc pour le résultat du isset.
 
Merci !
 


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

  [Résolu] Isset() Centraliser les erreurs

 

Sujets relatifs
gestion des erreurs venant de différentes couches[RESOLU] Erreurs HTML
Catcher les erreurs VBA en PHPCacul des erreurs d'un réseau de neurones.
interogation sur comment capter les erreursJe cale sur les erreurs d'URL... ENCORE
capter les erreursprobleme pour cacher les erreurs de connexion à database
[Résolu] IE et erreurs JS incompréhensibles 
Plus de sujets relatifs à : [Résolu] Isset() Centraliser les erreurs


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