Page 1 sur 1

Trying to get property of non-object

Posté : 09 mai 2012, 10:53
par foetus69
Bonjour,

On m'a livré un script et une base mais dans certains cas j'ai un : Trying to get property of non-object.

J'ai pour habitude de dire un script marche ou pas, c'est du binaire, donc est-il probable que ça vienne des données en base ?

Autrement, est-il possible de masquer l'erreur ? au même titre qu'un @ devant une fonction php ?

D'avance merci.

Fé.

Re: Trying to get property of non-object

Posté : 09 mai 2012, 11:45
par Mazarini
Cacher les problèmes ne les résout pas.
Il faut que tu regardes dans le script l'objet qui provoque l'erreur (fichier et ligne indiquée dans le message) puis que tu trouves ou l'objet devait être créer normalement. A partir de la, tu dois comprendre pourquoi il n'a pas été créé et modifier le programme en conséquence pour le créer ou pour ne pas l'utiliser s'il n'est pas créé.

Re: Trying to get property of non-object

Posté : 09 mai 2012, 12:36
par foetus69
Ravie de ton aide Mazarini.

Je suis d'accord avec toi. Cacher ne résout rien...mais l'idée, pour le moment, est de masquer l'erreur pour des raisons esthétiques en attendant que je trouve la solution. C'est possible ça ?

Apparemment le script s'appuie sur une variable vide ($varTemp->Num)

Du coup les conditions qui suivent ne peuvent être vérifiées...

Fé.

Re: Trying to get property of non-object

Posté : 09 mai 2012, 13:26
par Mazarini
tu peux regarder du coté de la fonction is_object : http://php.net/manual/fr/function.is-object.php
et faire les tests uniquement si la variable est un objet.

Re: Trying to get property of non-object

Posté : 10 mai 2012, 18:48
par foetus69
Salut !

Merci ca m'aide grandement :)

J'avais une question à 2 sous pour toi ?

Comment se passe le séquencement de plusieurs webservices ?

Je m'explique C dépend de B qui lui même dépend de A :

étape 1 : webservice A interrogé
étape 2 : réponse du webservice A
étape 3 : webservice B interrogé
étape 4 : réponse du webservice B
étape 5 : webservice C interrogé
étape 6 : réponse du webservice C

Que se passe t-il si B plante en étape 3 ou 4 ?

Autre question, est-ce que l'étape 5 peut répondre avant les étapes précédentes pour une raison ou une autre ? Quelle(s) raison(s) d'ailleurs ?

Féfé

Re: Trying to get property of non-object

Posté : 10 mai 2012, 18:50
par xTG
Bah j'ai envie de dire que ça dépend de ce que tu passes d'un webservice à l'autre...
Si B a besoin de A pour renvoyer quelque chose il va de soit qu'on va rien demander à B si A n'a pas répondu correctement...

Re: Trying to get property of non-object

Posté : 14 mai 2012, 05:36
par moogli

Comment se passe le séquencement de plusieurs webservices ?

Je m'explique C dépend de B qui lui même dépend de A :

étape 1 : webservice A interrogé
étape 2 : réponse du webservice A
étape 3 : webservice B interrogé
étape 4 : réponse du webservice B
étape 5 : webservice C interrogé
étape 6 : réponse du webservice C

Que se passe t-il si B plante en étape 3 ou 4 ?

Autre question, est-ce que l'étape 5 peut répondre avant les étapes précédentes pour une raison ou une autre ? Quelle(s) raison(s) d'ailleurs ?
L'étape 5 ne peux "répondre" avant les autres.
PHP étant séquentielle il déroule le script de haut en bas. Donc d'abord A puis B et enfin C, et ceci sans concurrence (tu ne lance pas de "thread" concurrent.

Pour le gestion des erreurs c'est un cas à prévoir et les blocs try/ catch servent à cela, tu peux faire un bloc par webservice et dans le catch tu ajoute le message d'erreur à un tableau d'erreur que tu affiche ensuite.

@+