[RESOLU] salesforce php problème avec une librairie

Eléphant du PHP | 385 Messages

15 août 2018, 14:51

Bonjour à tous,

Pourriez vous m'aider s'il vous plaît?

Je fais communiquer salesforce avec php avec cette classe

Code : Tout sélectionner

https://github.com/developerforce/Force.com-Toolkit-for-PHP/blob/master/soapclient/SforcePartnerClient.php
Cela fonctionne parfaitement en utilisant le queryResult je récupère bien des données, par contre j'ai des warning quand j'utilise la fonction Current

Code : Tout sélectionner

$nationalite = $queryResult->current()->fields->Nationalit__c;
qui sont

Code : Tout sélectionner

) Notice: Undefined property: stdClass::$queryLocator in C:\wamp64\www\debian\requiredFiles\toolkits\sf_toolkit_for_php\soapclient\SforceBaseClient.php on line 95 Notice: Undefined property: stdClass::$done in C:\wamp64\www\debian\requiredFiles\toolkits\sf_toolkit_for_php\soapclient\SforceBaseClient.php on line 957 Notice: Undefined property: stdClass::$size in C:\wamp64\www\debian\requiredFiles\toolkits\sf_toolkit_for_php\soapclient\SforceBaseClient.php on line 958
pourtant j'ai le bon résultat j'ai bien la nationalité qui est récupéré.

Ma question est puisque j'utilise @ pour éviter d'afficher les warning, à votre avis je continue avec les @, j'ouvre une issue sur le projet mais je ne sais même pas si il est encore actif ou je change de librairie pour communiquer avec salesforce en soap?

Merci à vous.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 août 2018, 18:23

A priori, ce ne sont que des Notice et non pas des Warning, en clair ce sont juste des éléments d'informations sur un éventuel problème mais ça n'est pas un avertissement formel.
La solution la meilleure est de corriger les problèmes de code qui génèrent ces notices, l'autre approche moins recommandée mais qui fonctionne surtout dans ton cas avec une librairie un peu ancienne, c'est simplement de désactiver l'affichage des notice via la fonction error_reporting() (la doc a un exemple justement avec ce cas)
Ça évite de mettre des "@" dans le code de la librairie qui pourrait masquer de véritables erreurs.

A noter que cette librairie est compatible uniquement avec PHP 5.x d'après sa doc, donc si ton projet est un projet moyen ou long terme, je te recommande de tester cette librairie avec PHP 7 et si elle ne fonctionne pas alors de l'abandonner pour faire des appels SOAP directement (ou même plutôt REST tant qu'à faire, c'est plus simple à manipuler)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 385 Messages

16 août 2018, 09:07

Super merci,

J'ai testé cela fonctionne avec php7 je vais devoir malheureusement faire l'approche moins recommandé avec le error_reporting() car n'ayant pas beaucoup de temps pour mettre en place une nouvelle libraire.

Encore merci pour ton aide.