JeuWeb - Crée ton jeu par navigateur
Quand ne doit-on pas utiliser de méthodes ? - 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 : Quand ne doit-on pas utiliser de méthodes ? (/showthread.php?tid=2260)

Pages : 1 2 3


RE: Quand ne doit-on pas utiliser de méthodes ? - Roworll - 10-01-2008

Les appels de classes devant notifier l'échec ou le succès de l'opération renvoient donc du XML.
En cas de réussite, c'est un simple
Code PHP :
<?php 
<xml>
<return
status="0">
</
xml>

En cas d'échec, c'est plus complet
Code PHP :
<?php 
<xml>
<return
status="-1">
<
errinfo>La cible n'est pas valide</errinfo>
<errinfo>Vous ne pouvez pas effectuer cette action</errinfo>
</xml>
En travaillant en Ajax par exemple, je commence par transformer le responseText reçu en un élément DOM (en utilisant loadXML pour IE ou le DOMParser pour le reste du monde).

Ensuite, il me reste juste à traiter les valeurs de retour. Par exemple :
Code PHP :
<?php 
<script type="text/javascript">
function
returnUpdateDB(xhr_obj) {
//Appel à ma fonction qui transforme en élément DOM
var _xml=XMLTransform(xhr_obj.responseText);
if(
_xml.getElementsByTagName("returncode")[0].getAttribute['status']==-1){
//Il y a eu des erreurs
var s='';
//Parcours de la liste des erreurs
//Ici je fais une simple concaténation des informations récupérées
//mais on peut imaginer facilement d'autres systèmes
var d=_xml.getElementsByTagName("errinfo");
for(var
x=0;x<d.length;x++){
s+=d[x].childNodes[0].nodeValue+'<br />';
}
//Affichage des erreurs via une autre fonction
infoError(s);
} else if(
_xml.getElementsByTagName("returncode")[0].getAttribute['status']==0){
//Pas d'erreur reportée
infoSuccess();
} else {
//Autre cas de figure non géré (Status non géré ou inexistant)
alert('Erreur Retour \n'+xhr_obj.responseText);
}
}
</
script>
Dans une configuration sans ajax, au rechargement de ta page après validation du formulaire, il te suffit de parser le XML renvoyé par tes classes de la même manière (simplexml_load_string()) et de traiter à ta convenance.

Renvoyer du XML est un peu plus lourd mais permet une plus grande souplesse au niveau de la communication entre modules, indépendamment du langage utilisé.