Derrière ce titre très (trop) long se cache un bug sur lequel je me suis cogné la tête pendant trois bonnes semaines (pas en permanence evidemment. Je pouvais me permettre de passer à autre chose dans le même projet).

J’utilise le plugin exifr dans une application Rails. J’avais cette erreur :

NameError (uninitialized constant EXIFR::JPEG):

Avec, évidemment, aucune information dans le log d’erreur d’ou pouvait provenir le fait qu’il n’arrive pas à charger la méthode JPEG de la classe EXIFR.
Alors que, qui plus est, la classe EXIFR est chargée …

Au final, j’ai compris en farfouillant un certain temps (c’est le genre de farfouillage qui est long parce qu’il faut redémarrer le serveur local toutes les 3 minutes).

Pour au final réaliser que j’ai une autre classe JPEG, qui entre en conflit.
En effet, pour Rails, JPEG, c’est ma classe. Il essaye donc de récupérer je ne sais quelle information de celle-ci. Information qui n’existe pas evidemment, d’ou mon erreur.
Erreur résolue en renommant la dernière classe citée en JPG. Mais beaucoup de temps perdu pour au final pas grand chose.

Alors que si j’avais été en PHP, j’aurais eu des $ devant mes variables, des () pour chacune de mes méthodes.
Et il aurait été sans aucun problème capable de savoir que en mettant EXIFR::JPEG, je cherche à appeller la méthode JPEG de la classe EXIFR. Et pas à faire un mixe entre mes classes EXIFR et JPEG.

P.S. : à l’url de cette page « php-rox », il faut ajouter un « (ou pas) » quand même.

2 Réponses à “De l'intérêt des langages demandant un caractère spécifique avant les noms de variables”

  1. Pada dit :

    Il faut dire que ça peut aussi être un avantage : personnellement, j’ai fait une overdose de $, %, * complètement abscons. De flèches aussi : qu’est ce que PHP serait joli avec de simples points faciles à taper sur un clavier portable…

    Sinon, dans tes farfouillages, la console rails ne t’a été d’aucune utilité ? Je demande ca parce que spontannément, j’aurais fait un ruby script/console, chargé la classe et vérifié ses méthodes et sous-classes/modules. Et si ça n’avait pas été concluant, j’y aurais certainement passé plus de 3 semaines =)

  2. Damien dit :

    C’est vrai que si PHP avait des points au lieu des \, ça serait vraiment fun :)

    En fait dans ce problème, je n’avais pas fait le rapprochement avec la classe. Donc même la console n’aurait pas aidé.

Laisser une réponse

 
Fork me on GitHub