Symfony 2 et PostgreSQL: Mots réservés

Symfony 2 propose une abstraction des entities très intéressante grâce à Doctrine. Je poste ce petit article car j’ai eu une erreur tout simple:

En fait, j’ai créé un bundle nommé User, et doctrine souhaite donc créer la table User. Le problème, c’est que user est un mot clé réservé dans PostgreSQL. Par conséquent, il faut donc forcer Doctrine à escaper le nom de la table. Pour se faire, il suffit d’ajouter une annotation Table en préfixant et suffixant le nom de la table par .

Voici par exemple ma classe User avant la correction:

Il suffit donc de d'ajouter l'annotation @ORMTable en spécifiant le nom de la table entouré de . Le nouveau code est:

Ainsi, Doctrine va générer ses requêtes en ajoutant des caractères d’échappement sur le nom de la table. Ainsi, vous n’aurez plus d’erreur! :)

facebooktwittergoogle_plusredditpinterestlinkedinmail

PHP SOAP: looks like we got no XML document

SOAP est un protocol vraiment très pratique mais la création du fichier wsdl est parfois compliquée… Il arrive de plus que parfois il y ai des erreurs que l’on ne peut pas vraiment indentifer. Si une erreur comme celle-ci vous arrive, voici comment débugger :

SoapFault exception: [Client] looks like we got no XML document

Cela signifie que la réponse reçue par SoapClient de la part du serveur n’est pas sous la forme d’un XML ou est sous la forme d’un XML mais cassé. Dans un premier temps, il faut ajouter l’option trace avec une valeur 1 aux options de SoapClient. Exemple:

Pour plus d’informations sur wsdl_cache, lisez le petit article sur le cache WSDL et PHP.

Ensuite, pour savoir exactement ce que SoapClient a reçu, il vous suffit d’appeller la fonction __getLastResponse :

Note: Il existe aussi la fonction __getLastRequest qui retourne la requête précédente.

facebooktwittergoogle_plusredditpinterestlinkedinmail

PHP: Utiliser le mode E_STRICT est une très bonne chose !

Depuis la version 5.0 de PHP, un nouveau mode d’erreur est apparu: E_STRICT. Il ne fait pas parti de E_ALL et est désactivé par défaut dans toute installation classique de PHP. Ce nouveau mode permet en fait de générer des conseils à partir de votre code. Testez-le, vous verez c’est sympa ! Il peut par exemple retourner ce genre d’erreur:

Strict Standards: date() [function.date]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin’ for ‘CEST/2,0/DST’ instead in /home/mon/fichier.php on line 196

Note: Si vous tombez ici par hasard et que vous souhaitez la liste des timezones disponibles dans PHP, elle est disponible à cette adresse.
Ici, PHP me fait penser que j’utilise la valeur par défaut du timezone du système d’exploitation. Étant sur mon propre serveur, il n’y a pas de problèmes mais sur un serveur mutualisé, on peut avoir des surprises ! 😉

Activer les rapports E_STRICT

Pour activer les rapports d’erreurs E_STRICT, c’est très simple. Ajoutez en haut de votre fichier PHP cette commande:

Ou modifiez votre fichier php.ini directement !

Note: Désactivez ce mode en production, c’est préférable :)

facebooktwittergoogle_plusredditpinterestlinkedinmail