En PHP, les noms de variables et de constantes sont sensibles à la casse, contrairement aux noms de fonctions.
Pour autant que je sache, PHP est le seul langage dans lequel cela se produit. Tous les autres langages que j'ai utilisés sont totalement sensibles à la casse ou totalement insensibles à la casse.
Pourquoi PHP partiellement sensible à la casse?
Veuillez noter que je ne demande pas quels noms sont sensibles à la casse, mais pourquoi .
Mise à jour
J'ai pensé que je pourrais ajouter, pour le bénéfice de ceux qui pensent que je demande qui , la liste suivante:
sensible à la casse
insensible à la casse
Remarque:
class
est insensible à la cassePourquoi PHP est-il partiellement sensible à la casse?
Je ne peux que spéculer que cela provient de versions très anciennes, probablement PHP/FI 2.0. Le manuel indique explicitement:
Gardez à l'esprit que les noms de fonction PHP/FI ne sont pas sensibles à la casse.
La plupart des entrées utilisateur, telles que GET et POST, ont toujours été enregistrées en tant que variables globales à l'époque. Les traiter comme étant insensibles à la casse aurait probablement causé des problèmes et, par conséquent, toutes les variables auraient été traitées comme étant sensible à la casse.
D'après ce que je peux dire, ce sont les seuls types d'identifiants en PHP/FI 2.0. Tous les autres ont été introduits plus tard, imitant apparemment les noms de fonction insensibles à la casse.
Les constantes, qui sont spéciales, n'ont été introduites qu'à partir de PHP 4 (le manuel PHP mentionne les "constantes", mais elles sont aujourd'hui appelées "littérales"). Pour une raison mystérieuse (peut-être qu'aucun consensus n'a pu être trouvé), il avait été décidé de permettre aux identifiants constants d'être define()
d soit sensibles à la casse ou insensibles à la discression des développeurs. Fait intéressant, tandis que define()
par défaut pour les constantes sensibles à la casse, les homologues C respectifs (REGISTER_*_CONSTANT
) par défaut à la casse.
Respect de la casse (à la fois défini par l'utilisateur et PHP défini)
Insensible à la casse (défini par l'utilisateur et PHP défini)
Dans php.net
Bases
Les variables en PHP sont représentées par un signe dollar suivi du nom de la variable. Le nom de la variable est sensible à la casse.
Les noms de variables suivent les mêmes règles que les autres étiquettes en PHP. Un nom de variable valide commence par une lettre ou un trait de soulignement, suivi d'un nombre quelconque de lettres, de chiffres ou de traits de soulignement. En tant qu'expression régulière, elle s'exprimerait ainsi: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
Quelques liens utiles
sensible à la casse
variables, constantes, clés de tableau, propriétés de classe, constantes de classe
insensible à la casse
fonctions, constructeurs de classe, méthodes de classe, mots-clés et constructions (if, else, null, foreach, echo etc.)