|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : avril 2009 Messages : 4 ![]() |
Bonjour à tous,
Je post ici après avoir cherché un peu partout sur le fofo comme sur d'autres site (aucune référence au problème auquel je fais face en ce moment ...). Je précise que je ne suis pas encore un dev chevronné et rompu aux affres du PHP. J'explique : Je développe en ce moment une appli en php avec une base mysql. J'ai créé toutes mes classes, avec des objets qui contiennent d'autres objets et pour lesquelles tout se charge automatiquement au démarrage. Après avoir testé et retesté le bousin, je me suis rendu compte que vu le poids des appels à la base, il valait mieux ne remplir completement ces objets que lorsque cela était vraiment nécessaire (je vous laisse deviner la raison ? bah une grosse perte de temps dans le cas contraire). Donc là dessus, sur certaines fonctions, je passe un booléen en paramètre pour leur dire s'il faut oui ou non chargé les objets contenus dans les objets recherchés (j'espère que je suis clair ), voir dans la fonction qui pose problème en ce moment, s'il faut enregistrer tous les objets en cascade ou non.Le problème : quoique je fasse, quelque soit la valeur que je passe en paramètre, elle n'est pas prise en compte (ou plutôt la valeur 'false' est prise en compte à chaque appel). La question que je me pose, après avoir re-vérifié le script sous toutes les coutures, c'est est ce que cela peut provenir d'un problème de serveur ? (nan, parce que je ne vois vraiment pas ce qui cloche là dedans Je vous met un bout de la fonction en question (pas la peine de mettre l'intégralité et de tte façon elle est un peu trop longue pour ça, sans parler de la classe elle même). Code :
Help please ! |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() David GuillotChef de projet en SSII Inscription : mars 2004 Messages : 879 ![]() |
![]() Ta variable $attr est probablement modifiée, soit avant d'entrer dans ta fonction, soit à l'intérieure de ta fonction. Méfie-toi de l'écrasement de variables causé par un mauvais nommage... Je ne vois que ça
__________________
Avant de poser une question ici : ![]() Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé |
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2009 Messages : 4 ![]() |
Bah l'appel de la méthode est plutôt simple (enfin l'appel qui pose problème).
La valeur ne peut pas être modifiée avant appel de la méthode, puisque les cas dans lesquels j'enregistre le tout sont très ciblés et dans les scripts où cela se produit, ils sont appelés de cette manière. (J'ai aussi tenté avec 'Enregistrer(1);', 'Enregistrer("true");', par acquis de conscience, mais pas de changement.) Et dans la méthode en question, la variable $attr n'est utilisée pour la première fois que dans lors du test (je lui ai changé de nom plusieurs fois pour tester ce genre de bêtises, mais c'est le même résultat). J'ai beau regarder encore et encore, je ne vois pas d'erreur de codage. Je me demandais, du coup, si les différentes strates d'objets imbriqués les unes dans les autres ne pouvaient pas poser ce genre de problème, où si l'erreur ne pouvait pas provenir d'un problème de surcharge au niveau du serveur (je n'y crois pas vraiment, mais comme disait Sherlock Holmes dans un des bouquins de Sir Arthur Conan Doyle, "Lorsque vous avez éliminé l'impossible, ce qui reste, si improbable soit-il, est nécessairement la vérité."). Du coup, je patauge ... et je vais finir par supprimer la condition et faire la maj de chaque objet à chaque fois (mais ca me désole, je n'ai pas pour habitude de laisser un script me dicter ma conduite ).Merci quand même pour la tentative de réponse, David. |
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Citation:
On voit qu'il y a un return false conditionnel juste avant, sans parler de la partie de code non montrée. Pour obtenir des certitudes là-dessus, il suffirait d'ajouter des print dans ton code. |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2009 Messages : 4 ![]() |
Lorsque tout se passe correctement la méthode me retourne "true" (et "false" dans chaque cas d'erreur, avec une description de l'erreur lorsqu'elle ressort de la méthode si problème), or à chaque appel je n'ai constaté aucune erreur (je teste le retour de chaque fonction / méthode avant de poursuivre dans mon script.
Quant à la partie du code non montrée, ce ne sont que des vérifications sur les différents champs, leur unicité, leur format, leur existence ou non, (...) avec les mêmes règles de sorties en cas d'erreurs. La totalité des objets créés me donne chaque erreur à chaque niveau, au sein de chaque script écrit avec ces objets, donc si erreur et sortie impromptue il y a, le script s'arrete ... Ici, le script continue pourtant jusqu'à la fin et reçoit la valeur "true" pour chaque appel de méthode. J'en déduis que les méthodes en question se déroulent jusqu'à la fin sans soucis, puisqu'aucun retour d'erreur. La seule chose qui ne passe pas, c'est la variable d'entrée qui semble ne pas exister lors du lancement des méthodes d'enregistrement. |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Quand à l'oeil le code n'a pas de problème mais qu'à l'exécution il s'avère qu'il en a , on met des print.
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : avril 2009 Messages : 4 ![]() |
Je me suis sûrement mal exprimé, mais dans le mode "debug" mis en place, j'ai effectivement le contenu de chaque variable d'affiché à l'écran, en plus du retour d'erreurs dans les différents objets, et lors d'un appel où je passe 'true' dans l'attribut, la variable est affichée comme inexistante (ou nulle si vous préférez)
|
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Et bien passe "123" et regarde si elle est "affichée" comme contenant 123.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com